如果帖子长度超过3行文本,是否附加‘继续阅读’链接?

时间:2013-09-17 作者:MrS1ck

我对Wordpress的编码还很陌生,请耐心听我说。

我的主页上有一个部分,列出了最近的两篇博客文章。

如果文字超过三行,我的设计就会一团糟。所以我想知道是否有一个本机函数可以让我自动附加“继续阅读”,并允许用户单击该链接将他们带到完整的博客帖子?

例如,这是我不想要的:

Bad

这就是我想要的,我在Photoshop中做了设计,如果帖子长度超过3行,我希望这样做。

Good

谢谢,如果需要的话,我会尽力澄清的!

3 个回复
SO网友:Andre Yonadam

我不会去写台词,而是会尝试去写字符或单词。下面的示例使用字符。

不要相信我的话,因为它还没有经过测试。

$character == 40; // number of characters to compare
if(mb_strlen( get_the_content() < $character){
the_content();
}else{
the_content(\'Continue Reading...\')
}
或者通过字数。

$words == 20; // number of characters to compare
if(str_word_count(get_the_content(),0)  < $words){
the_content();
}else{
the_content(\'Continue Reading...\')
}

SO网友:gmazzap

问题是,线条并不是PHP可以理解的单位,因为它更多地与显示相关,而不是与内容相关,简而言之,PHP无法测量它。

在Wordpress中,您需要的是使用函数the_excerpt 我打赌这是用在你的主题(请务必阅读提供的链接,其中包含了对您有用的信息)

如前所述,实际上,行不是PHP的有效单位,the_excerpt 使用字数作为限制。默认情况下,限制为55个单词。

如何更改:第一种方法是使用过滤器,如下所示:

add_filter( \'excerpt_length\', function() { return 20; }, 99 );
这样,你的帖子的“摘要”就可以显示20个字。

创建摘录时,从帖子内容中剪切一定数量的单词,[...] 附在摘录之后。

要避免这种情况,可以使用另一个过滤器:

add_filter( \'excerpt_more\', function() { return \'\'; }, 99 );
这样,就不会向修剪的文本追加任何内容。如果你想附加一些东西,就把你想要的东西放进去\'\' 在上一个函数中。

另一种决定“摘要”结束位置的方法是,在创建帖子时,在帖子中插入摘录:

manual excerpt

通过这种方式,您可以准确地决定摘要的结束位置。

关于摘录的长度,我想现在你可以控制它了,现在我们可以回答你问题的第二部分了。

添加“继续阅读”的更简单方法是使用get_permalink(); 那么,在代码中the_excerpt(), 替换为:

the_excerpt(); printf(\'<a href="%s">%s</a>\', get_permalink(), \'Continue Reading...\'); 
请注意,这将始终将链接添加到单个帖子,即使帖子比摘录长度短。

若要仅在帖子内容长于摘录时添加链接,您可以仅使用the_excerpt(); 并使用前面解释的“摘录\\u更多”过滤器,其中返回的链接不是空字符串,而是post:

add_filter( \'excerpt_more\', function() {
  return \' <a class="read-more" href="\'. get_permalink( get_the_ID() ) . \'">Continue Reading...</a>\';
});

请注意:

在这个答案中,我假设您的模板使用the_excerpt 要显示帖子摘要,这是最常见的方式,但有些主题会以不同的方式处理,因此如果发布的代码不适合您,您的主题可能会使用不同的方式。。。在这种情况下,添加模板的代码更新您的问题,肯定会有人很快帮助您。

SO网友:s_ha_dum

根据字符或单词,甚至句子来截断文本很容易,但PHP无法知道您有多少行文本。这种计算是在内容离开服务器后由浏览器进行的,这取决于屏幕大小、窗口宽度、字体、浏览器本身,甚至一些浏览器插件都可以改变内容。此外,文字的长度可以改变文字的“流动”和“包装”——这让我们的设计师们疯狂,因为他们习惯于为印刷品设计,所有这些东西都可以严格控制。

为了接近您想要的内容,您需要Javascript,但这与这里的主题无关。使用PHP,你能得到的最好的答案是@AndreYonadam post(我投了更高的票)或@G-M(我也投了更高的票),但这里还有许多其他问题有类似的答案。

结束

相关推荐

使用GET_POSTS获取自定义字段数据,但使用一个数组

我在WordPress中运行了一个get\\u posts查询,需要提取一对自定义字段并将它们全部放入一个数组中。get\\u posts查询提供了一个post数组,但当我使用foreach访问自定义字段时,最终会为每个结果提供单独的数组。The Query$c_query = get_posts( array( \'post_type\' => \'page\',