web-dev-qa-db-ja.com

"the_excerpt"のadd_filterは、投稿に抜粋がない場合にのみ機能します。

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_the_excerpt()呼び出しは "excerpt_length"で指定された単語数だけを返すようにフィルタ処理されます

3
N2Mystic

私はしばらく前に 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');
4
Michael