我已经在设置->阅读页面上设置
您的首页显示= 您的最新帖子
对于提要中的每篇文章,请显示= 摘要
在WordPress管理页面上,我有10篇文章。每篇文章都有主要内容,有些文章没有摘录内容,这意味着某些文章的摘录框为空。
我的目标是因为内容众多,因此显示所有带有阅读更多链接的文章。
为此,我正在使用以下代码:
<?php the_excerpt(); ?>
以及在functions.php文件中:
function wpdocs_custom_excerpt_length( $length ) {
return 5;
}
add_filter( 'excerpt_length', 'wpdocs_custom_excerpt_length', 999 );
function wpdocs_excerpt_more( $more ) {
if ( ! is_single() ) {
$more = sprintf( '<a class="read-more" href="%1$s">%2$s</a>',
get_permalink( get_the_ID() ),
__( ' Read More>>>', 'wordpress-theme' )
);
}
return $more;
}
add_filter( 'excerpt_more', 'wpdocs_excerpt_more' );
现在,在博客页面上,我可以看到一些具有阅读更多链接,而另一些具有完整文章而没有阅读更多链接。为什么?
更新:
我可以看到,如果我在摘录框中添加了任何内容,则该内容从该专家框中显示,并且未显示更多链接
如果该框为空,则显示的是主内容框中的内容,其中包含截断的字符,并且显示更多内容
我更新的问题:如果内容来自摘录框,为什么它没有显示更多信息?
答案 0 :(得分:0)
按字符数限制摘录,但不要截断最后一个单词。这样一来,您最多可以返回字符数,但保留完整的单词,因此仅返回可以容纳指定数量限制的单词,并允许您指定摘录的来源。
function get_excerpt($limit, $source = null){
$excerpt = $source == "content" ? get_the_content() : get_the_excerpt();
$excerpt = preg_replace(" (\[.*?\])",'',$excerpt);
$excerpt = strip_shortcodes($excerpt);
$excerpt = strip_tags($excerpt);
$excerpt = substr($excerpt, 0, $limit);
$excerpt = substr($excerpt, 0, strripos($excerpt, " "));
$excerpt = trim(preg_replace( '/\s+/', ' ', $excerpt));
$excerpt = $excerpt.'... <a href="'.get_permalink($post->ID).'">more</a>';
return $excerpt;
}
/*
Sample... Lorem ipsum habitant morbi (26 characters total)
Returns first three words which is exactly 21 characters including spaces
Example.. echo get_excerpt(21);
Result... Lorem ipsum habitant
Returns same as above, not enough characters in limit to return last word
Example.. echo get_excerpt(24);
Result... Lorem ipsum habitant
Returns all 26 chars of our content, 30 char limit given, only 26 characters needed.
Example.. echo get_excerpt(30);
Result... Lorem ipsum habitant morbi
*/
此功能可以在整个主题文件中多次使用,每个主题文件均指定了不同的字符数限制。
此功能可以从任何一个中摘录
例如,如果您在帖子编辑器屏幕的the_excerpt框中有包含文本的帖子,但想从the_content正文中摘录,而不是出于特殊用例,则应该这样做;
get_excerpt(140, 'content'); //excerpt is grabbed from get_the_content
这告诉函数您要the_content
中的前140个字符,而不管是否在the_excerpt
框中设置了摘录。
get_excerpt(140); //excerpt is grabbed from get_the_excerpt
这告诉函数您要先从the_excerpt
开始的前140个字符,在没有摘录的地方,the_content
将用作后备。
可以改进此功能以使其更加高效,或者可以将WordPress过滤器与the_content
或the_excerpt
结合使用,也可以按原样在没有合适的,内置的WordPress API替代方案。