Fügen Sie dem Widget “Letzte Beiträge” mithilfe von Filtern Miniaturansichten hinzu

Ich möchte ein Miniaturbild für das letzte Posts-Widget von WordPress hinzufügen und möchte dies mit jedem verfügbaren Filter tun. Gibt es zu diesem Thema / Thema einen Filter?

Solutions Collecting From Web of "Fügen Sie dem Widget “Letzte Beiträge” mithilfe von Filtern Miniaturansichten hinzu"

Hier ist eine Möglichkeit, dies über den Filter ” the_title zu tun. Wir können den Bereich auf das Widget ” Letzte Posts” beschränken , indem wir ihn innerhalb des widget_posts_args initialisieren und ihn anschließend nach der Schleife wieder entfernen.

 /** * Recent Posts Widget: Append Thumbs */ add_filter( 'widget_posts_args', function( array $args ) { add_filter( 'the_title', 'wpse_prepend_thumbnail', 10, 2 ); add_action( 'loop_end', 'wpse_clean_up' ); return $args; } ); 

wo wir definieren

 function wpse_prepend_thumbnail( $title, $post_id ) { static $instance = 0; // Append thumbnail every second time (odd) if( 1 === $instance++ % 2 && has_post_thumbnail( $post_id ) ) $title = get_the_post_thumbnail( $post_id ) . $title; return $title; } 

und

 function wpse_clean_up( \WP_Query $q ) { remove_filter( current_filter(), __FUNCTION__ ); remove_filter( 'the_title', 'wpse_add_thumnail', 10 ); } 

Beachten Sie, dass aufgrund dieser Überprüfung in der WP_Widget_Recent_Posts::widget() -Methode:

 get_the_title() ? the_title() : the_ID() 

Der Filter ” the_title wird zweimal für jedes Element angewendet. Aus diesem Grund wenden wir nur die Vorschaubilder für die einzelnen Fälle an.

Beachten Sie auch, dass dieser Ansatz nicht leere Titel annimmt.

Ansonsten ist es flexibler, stattdessen ein neues Widget für unsere Bedürfnisse zu erstellen / erweitern.

Kein Filter verfügbar.


Überprüfen Sie die /wp-includes/widgets/class-wp-recent-posts-widget.php Folgendes ist der Code, der das Widget ausgibt

 $r = new WP_Query( apply_filters( 'widget_posts_args', array( 'posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true ) ) ); if ($r->have_posts()) : ?> < ?php echo $args['before_widget']; ?> < ?php if ( $title ) { echo $args['before_title'] . $title . $args['after_title']; } ?>  < ?php echo $args['after_widget']; ?> < ?php // Reset the global $the_post as this query will have stomped on it wp_reset_postdata(); endif; 

Was offensichtlich keinen Filter hat, um ein Thumbnail oder irgendetwas in die Schleife einzufügen.