it-swarm.com.de

add_filter on "the_excerpt" funktioniert nur, wenn der Beitrag keinen Auszug enthält

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);
    }
 //...
 }}

Dieser Filter funktioniert hervorragend, wenn der Beitrag keinen Auszug enthält. Wie wende ich denselben Filter auf einen Beitrag mit einem Auszug an?

Mit anderen Worten, wenn der Beitrag einen aktuellen Ausschnitt hat, wird dieser nicht gefiltert, sondern der gesamte Ausschnitt angezeigt. Wenn der Beitrag jedoch keinen Auszug enthält, wird der Aufruf get_the_excerpt () gefiltert, sodass nur die Anzahl der durch "excerpt_length" angegebenen Wörter zurückgegeben wird.

3
N2Mystic

Ich habe vor einiger Zeit einen Artikel darüber gepostet:

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