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

get_the_excerpt( int|WP_Post $post = null )

检索文章摘要

excerpt 摘要more...

themore...


参数

$post

(int|WP_Post) (可选) 文章 ID或WP_Post对象。默认值为全局$post。

默认值: null


返回

(string) 文章摘要



源码

查看源码 官方文档


更新日志

版本描述
4.5.0引入了$post参数
0.71开始引入

使用示例

  • 示例1

    如果此函数在循环外部使用,并且文章没有自定义摘要,则此函数将使用wp_trim_excerpt()生成摘录。该函数使用get_the_content(),必须与循环一起使用,如果get_the_excerpt()在循环外部使用,则会导致问题。为了避免这些问题,请在调用get_the_excerpt()之前使用setup_postdata()来设置全局$post对象。

  • 示例2

    对HTML meta description使用摘录

    <!-- Use Post excerpt for meta description.  -->
    <?php if ( is_single() ) { ?>
    <meta name="description" content="<?php echo wp_strip_all_tags( get_the_excerpt(), true ); ?>" />
    <?php } ?>
    

    (将wp_strip_all_tags的第二个参数设置为true将删除剩余的换行符和空格字符。)

  • 示例3

    将主页上显示的手动摘录限制为260个字符,但在最后一个单词后截断

    此代码段必须放在the_excerpt()所在的主题中。这是为了修改手动输入的摘录,而不是WordPress从内容中自动获取的摘录。

    它将显示手动输入的摘录的前260个字符,但不是以第260个字符结尾,而是在最近的单词后截断。要更改字符数,只需将值“260”更改为另一个数字。请记住删除主题中的the_excerpt(),并将其替换为以下内容:

    <?php
    $excerpt = get_the_excerpt();
    
    $excerpt = substr($excerpt, 0, 260);
    $result = substr($excerpt, 0, strrpos($excerpt, ' '));
    echo $result;
    ?> 
  • 示例4

    使用

    has_excerpt()

    以防止出现通知:在post-template.php中未定义的偏移量: -1

    $excerpt = '';
    if (has_excerpt()) {
        $excerpt = wp_strip_all_tags(get_the_excerpt());
    }

    否则,您可能会得到一个未定义的偏移量-1警告,不要试图直接get_excerpt以检查使用isset还是NULL时,您将返回一个未定义的偏移量-1

  • 示例5

    可扩展摘录功能

    首先添加此函数到function.php

    function expandable_excerpt($excerpt)
    {
    	$split = explode(" ", $excerpt); //convert string to array
    	$len = count($split); //get number of words
    	$words_to_show_first = 19; //Word to be dsiplayed first
    	if ($len > $words_to_show_first) { //check if it's longer the than first part
    
    		$firsthalf = array_slice($split, 0, $words_to_show_first);
    		$secondhalf = array_slice($split, $words_to_show_first, $len - 1);
    		$output = '<p class="event-excerpt" >';
    		$output .= implode(' ', $firsthalf) . '<span class="see-more-text">...see more</span>';
    
    		$output .= '<span class="excerpt-full hide">';
    		$output .= ' ' . implode(' ', $secondhalf);
    		$output .= '</span>';
    		$output .= '</p>';
    	} else {
    		$output = '<p class="event-excerpt">'  .   $excerpt . '</p>';
    	}
    	return $output;
    }

    需要CSS,以便在需要时简单地隐藏元素
    .excerpt-full.hide {
    display: none;
    }
    .see-more-text.hide {
    display: none;
    }

    需要JS脚本,以便在需要时添加/删除css类

    const itemSeeMore = document.querySelectorAll(
      "p.event-excerpt> span.see-more-text"
    );
    if (itemSeeMore) {
      itemSeeMore.forEach((item) => {
        item.addEventListener("click", () => {
          item.classList.toggle("hide");
          item.nextElementSibling.classList.toggle("hide");
        });
      });
    }
  • 示例6

    示例
    get_the_excerpt() 可用于检索和存储变量的值,而无需将其输出到页面。

    <?php
    $my_excerpt = get_the_excerpt();
    if ( '' != $my_excerpt ) {
    	// Some string manipulation performed
    }
    echo $my_excerpt; // Outputs the processed value to the page
    ?>