我知道这是一个非常古老的线程,但我只是在这个问题上苦苦挣扎,我在网上找到的解决方案都没有适合我。一方面,我自己的“excerpt_more”过滤器总是被切断。
我解决它的方法很丑陋,但这是我能找到的唯一可行的解决方案。丑陋之处在于修改 4 行 WP core(!!) + 使用另一个全局变量(虽然 WP 已经做了很多我不觉得太糟糕)。
我将 wp-includes/formatting.php 中的 wp_trim_excerpt 更改为:
<?php
function wp_trim_excerpt($text = '') {
global $excerpt_length;
$len = $excerpt_length > 0 ? $excerpt_length : 55;
$raw_excerpt = $text;
if ( '' == $text ) {
$text = get_the_content('');
$text = strip_shortcodes( $text );
$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $text);
$excerpt_length = apply_filters('excerpt_length', $len);
$excerpt_more = apply_filters('excerpt_more', ' ' . '[…]');
$text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
}
$excerpt_length = null;
return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
}
唯一的新东西是$excerpt_length 和$len 位。
现在,如果我想更改默认长度,请在我的模板中执行此操作:
<?php $excerpt_length = 10; the_excerpt() ?>
更改核心是一个糟糕的解决方案,所以我很想知道是否有人提出了更好的解决方案。