WordPress有内置函数来实现这一点。唯一的问题是,它假设所有摘录的最大长度都相同。
如果这个假设是正确的,那么您所要做的就是定义这个最大值。
您可以使用此过滤器执行此操作(将其放入functions.php
文件):
function my_excerpt_length( $length ) {
return 40; // put new excerpt length in here
}
add_filter( \'excerpt_length\', \'my_excerpt_length\' );
然后在模板文件中,只需执行以下操作:
setup_postdata( $post );
the_excerpt();
如果您需要在站点的不同位置使用不同的摘录长度,那么您可以使用类似的内容(将此函数添加到functions.php中):
function my_trim_excerpt($text = \'\', $excerpt_length =0) {
if ( !$excerpt_length )
$excerpt_length = apply_filters(\'excerpt_length\', 55);
$raw_excerpt = $text;
$text = strip_shortcodes( $text );
$text = apply_filters(\'the_content\', $text);
$text = str_replace(\']]>\', \']]>\', $text);
$excerpt_length = apply_filters(\'excerpt_length\', 55);
$excerpt_more = apply_filters(\'excerpt_more\', \' \' . \'[...]\');
$text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
return apply_filters(\'get_the_excerpt\', apply_filters(\'wp_trim_excerpt\', $text, $raw_excerpt));
}
然后像这样使用:
echo apply_filters(\'the_excerpt\', my_trim_excerpt($post->post_content, 40)); // 40 is the excerpt length