参数
- $post
-
(int|WP_Post) (可选) 文章 ID或WP_Post对象。默认值为全局$post。
默认值: null
返回
(string) 文章摘要
源码
更新日志
版本 | 描述 |
---|---|
4.5.0 | 引入了$post 参数 |
0.71 | 开始引入 |
使用示例
如果此函数在循环外部使用,并且文章没有自定义摘要,则此函数将使用wp_trim_excerpt()生成摘录。该函数使用get_the_content(),必须与循环一起使用,如果get_the_excerpt()在循环外部使用,则会导致问题。为了避免这些问题,请在调用get_the_excerpt()之前使用setup_postdata()来设置全局$post对象。
对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将删除剩余的换行符和空格字符。)
将主页上显示的手动摘录限制为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; ?>
使用
has_excerpt()
以防止出现通知:在post-template.php中未定义的偏移量: -1
$excerpt = ''; if (has_excerpt()) { $excerpt = wp_strip_all_tags(get_the_excerpt()); }
否则,您可能会得到一个未定义的偏移量-1警告,不要试图直接get_excerpt以检查使用isset还是NULL时,您将返回一个未定义的偏移量-1
可扩展摘录功能
首先添加此函数到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"); }); }); }
示例
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 ?>