当前浏览:首页 / WordPress函数 / the_excerpt()

the_excerpt()

显示文章摘要

excerpt 摘要more...

themore...


说明

在对当前文章应用多个过滤器(包括自动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开始引入

使用示例

  • 示例1

    使用过滤器控制摘要长度,默认情况下,摘录长度设置为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 );
    
  • 示例2

    将“阅读更多”字符串链接到帖子:
    将其放在主题的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。

  • 示例3

    对于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' );
    
  • 示例4

    摘录excerpt_length示例中的phpdoc在应该说“单词”的地方说“字符”。仅供参考!

  • 示例5

    与条件标签一起使用,在存档页或类别页上时,将the_content()标签替换为the_excerpt()

    以下两个示例都适用于1.5及以上版本。

    <?php if ( is_category() || is_archive() ) {
    	the_excerpt();
    } else {
    	the_content();
    } ?>
    

    此示例意味着只有一个模板文件同时用于类别和归档,例如,archive.php
    而且模板还显示了其他内容,所以这可能只是index.php

  • 示例6

    更改“[…..]”输出的简单函数文本:

    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更改为您想要的任何内容… 像按钮之类的。

  • 示例7

    使用此过滤器最安全的方法是检查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' );
  • 示例8

    如何手动添加摘录并限制长度:

    $excerpt = get_the_excerpt(); 
    
    $excerpt = substr( $excerpt, 0, 260 ); // Only display first 260 characters of excerpt
    $result = substr( $excerpt, 0, strrpos( $excerpt, ' ' ) );
    echo $result;
    
  • 示例9

    默认用法,显示文章摘要。用于提供索引形式的模板,即主页、类别、标签、存档页。不用于单页视图。对于静态页面没有意义。

    用作the_content()的替代品,以强制在循环中显示摘录。

    <?php the_excerpt(); ?>
    
  • 示例10

    经典编辑器:在“摘录”字段底部添加一个单词计数器

    这将在创建新帖子时在“摘录”字段下添加一个单词计数器。如果您想限制手动输入的摘录的时间,请参阅。

    将其添加到您的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');