仅当POST没有摘录时,“the_excerpt”上的ADD_FILTER才有效

时间:2012-12-13 作者:N2Mystic

class my_menu extends WP_Widget
{

function widget($args, $instance)
{

// Excerpt length filter
    $new_excerpt_length = create_function(\'$length\', "return " . $excerpt_length . ";");

    if ( $instance["excerpt_length"] > 0 ) {
    add_filter(\'excerpt_length\', $new_excerpt_length, 999);
    }
 //...
 }}
如果帖子没有摘录,这个过滤器效果很好。如何对包含摘录的帖子应用相同的过滤器?

换句话说,当文章有一个实际的摘录时,它根本不会过滤它,整个摘录就会显示出来。但是,当文章没有摘录时,get\\u the\\u exterpt()调用将被过滤,以便它只返回“exterpt\\u length”指定的字数

1 个回复
最合适的回答,由SO网友:Michael 整理而成

我发布了article 关于这一点,不久前:

function wp_trim_all_excerpt($text) {
// Creates an excerpt if needed; and shortens the manual excerpt as well
global $post;
   $raw_excerpt = $text;
   if ( \'\' == $text ) {
      $text = get_the_content(\'\');
      $text = strip_shortcodes( $text );
      $text = apply_filters(\'the_content\', $text);
      $text = str_replace(\']]>\', \']]>\', $text);
   }

$text = strip_tags($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(\'wp_trim_excerpt\', $text, $raw_excerpt); 
}

remove_filter(\'get_the_excerpt\', \'wp_trim_excerpt\');
add_filter(\'get_the_excerpt\', \'wp_trim_all_excerpt\');

结束

相关推荐

Excerpt not alway available

我有一个php函数,可以打印最后三篇文章的标题和摘录。第一篇文章没有摘录。代码如下: $posts = wp_get_recent_posts( array(\'numberposts\' => 3, \'post_status\' => \'publish\') ); foreach ($posts as $post) { setup_postdata($post); echo \"<h2 style=\'font-size: