说明
在对当前文章应用多个过滤器(包括自动p格式)后,显示当前文章的摘要,该过滤器可将双线分隔符转换为HTML段落。如果文章没有明确的摘要,它首先使用get_the_excerpt()生成完整文章内容的精简版本。
内容截取后的摘要版在结尾处包含一个 "更多 "标签,默认为[...]或 "hellip "符号,默认情况下,用户提供的摘要不会被赋予这样一个符号。要添加它,你必须在调用the_excerpt()之前在你的模板中手动修改原始的$post->post_excerpt,为'get_the_excerpt'添加一个优先级低于10的过滤器,或者为'wp_trim_excerpt'添加一个过滤器(比较第一个和第二个参数,因为用户提供的摘要不会被这个函数以任何方式改变)。
有关更多详细信息,请参阅get_the_excerpt()。
自动生成的摘要还将删除所有短代码和标签。它被裁剪为单词边界,默认长度为55个单词。对于用单个字符(或可以用单个字符)描述单词的语言(即东亚语言),单词边界实际上是字符。
注:如果当前post是附件,例如在attachment.php和image.php循环模板中,然后显示附件说明。说明不包括“[…]”文本。
与 <!–more–> 快速标签的比较
摘要提供了使用<!--more-->快速标签的替代方法,more标签要求文章作者手动在文章内容中创建一个“拆分”,然后用于在索引页上生成一个“阅读更多”链接,摘要虽然需要却不一定要求文章作者为完整的文章内容提供一个 "预告"。
<!--more-->快速标签要求模板使用the_content(),而使用摘要则要求并允许模板编写者明确选择是显示全文(使用the_content())还是摘要(使用the_excerpt())。
然后,可以根据使用的模板、页面类型、文章类别等因素选择是否显示完整文章或摘要。换句话说,通过一个<!--more-->快速标签,文章作者可以决定发生了什么,而模板作者可以控制摘要。此外,尽管<!--more-->可以使用$stripstriser参数创建真正的分割,但根据特征进行区分将是困难和复杂的,这导致这基本上成为站点范围内的选择。
源码
更新日志
版本 | 描述 |
---|---|
0.71 | 开始引入 |
使用示例
使用过滤器控制摘要长度,默认情况下,摘录长度设置为55个单词。要使用
excerpt_length
过滤器将摘录长度更改为20个字,请在functions.php
文件中添加以下代码/** * Filter the except length to 20 words. * * @param int $length Excerpt length. * @return int (Maybe) modified excerpt length. */ function wpdocs_custom_excerpt_length( $length ) { return 20; } add_filter( 'excerpt_length', 'wpdocs_custom_excerpt_length', 999 );
将“阅读更多”字符串链接到帖子:
将其放在主题的functions.php
中,将“阅读更多”链接到帖子/** * Filter the "read more" excerpt string link to the post. * * @param string $more "Read more" excerpt string. * @return string (Maybe) modified "read more" excerpt string. */ 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', 'textdomain' ) ); } return $more; } add_filter( 'excerpt_more', 'wpdocs_excerpt_more' );
注意:此链接不会出现在新行上。要实现这一点,请修改
.read-more
类的CSS。对于WordPress 2.9及更高版本,使用过滤器修改
[...]
字符串默认情况下,末尾的摘录“read more”字符串设置为“[…]”。要使用
excerpt_more
过滤器更改摘录“read more”字符串,请在主题的functions.php
文件中添加以下代码:/** * Filter the excerpt "read more" string. * * @param string $more "Read more" excerpt string. * @return string (Maybe) modified "read more" excerpt string. */ function wpdocs_excerpt_more( $more ) { return '[.....]'; } add_filter( 'excerpt_more', 'wpdocs_excerpt_more' );
摘录excerpt_length示例中的phpdoc在应该说“单词”的地方说“字符”。仅供参考!
与条件标签一起使用,在存档页或类别页上时,将
the_content()
标签替换为the_excerpt()
。以下两个示例都适用于1.5及以上版本。
<?php if ( is_category() || is_archive() ) { the_excerpt(); } else { the_content(); } ?>
此示例意味着只有一个模板文件同时用于类别和归档,例如,
archive.php
而且模板还显示了其他内容,所以这可能只是index.php
。更改“[…..]”输出的简单函数文本:
function wpdocs_excerpt_more( $more ) { return '<a href="'.get_the_permalink().'" rel="nofollow">Read More...</a>'; } add_filter( 'excerpt_more', 'wpdocs_excerpt_more' );
您可以将“my-class”的CSS更改为您想要的任何内容… 像按钮之类的。
使用此过滤器最安全的方法是检查
is_admin
,因为它可能会在管理区域发生如下更改:/** * Filter the excerpt "read more" string. * * @param string $more "Read more" excerpt string. * @return string (Maybe) modified "read more" excerpt string. */ function wpdocs_excerpt_more( $more ) { if ( is_admin() ) { return $more; } return '[.....]'; } add_filter( 'excerpt_more', 'wpdocs_excerpt_more' );
如何手动添加摘录并限制长度:
$excerpt = get_the_excerpt(); $excerpt = substr( $excerpt, 0, 260 ); // Only display first 260 characters of excerpt $result = substr( $excerpt, 0, strrpos( $excerpt, ' ' ) ); echo $result;
默认用法,显示文章摘要。用于提供索引形式的模板,即主页、类别、标签、存档页。不用于单页视图。对于静态页面没有意义。
用作
the_content()
的替代品,以强制在循环中显示摘录。<?php the_excerpt(); ?>
经典编辑器:在“摘录”字段底部添加一个单词计数器
这将在创建新帖子时在“摘录”字段下添加一个单词计数器。如果您想限制手动输入的摘录的时间,请参阅。
将其添加到您的
functions.php
文件中:/** * Use jQuery to add a word counter to the excerpt box * * Should attach to all post screens and indicate the number of words just below the #excerpt textarea */ function gv_excerpt_word_count_js() { echo ' <script>jQuery(document).ready(function(){ jQuery("#postexcerpt #excerpt").after("Word Count: "); jQuery("#excerpt-word-count").html(jQuery("#excerpt").val().split(/S+b[s,.'-:;]*/).length - 1); jQuery("#excerpt").keyup( function() { jQuery("#excerpt-word-count").html(jQuery("#excerpt").val().split(/S+b[s,.'-:;]*/).length - 1); }); });</script> '; } add_action( 'admin_head-post.php', 'gv_excerpt_word_count_js'); add_action( 'admin_head-post-new.php', 'gv_excerpt_word_count_js');