这里有一种方法可以通过the_title
滤器我们可以通过在widget_posts_args
过滤,然后在循环后再次移除。
/**
* 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;
} );
我们定义的位置
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;
}
以及
function wpse_clean_up( \\WP_Query $q )
{
remove_filter( current_filter(), __FUNCTION__ );
remove_filter( \'the_title\', \'wpse_add_thumnail\', 10 );
}
请注意,由于在
WP_Widget_Recent_Posts::widget()
方法:
get_the_title() ? the_title() : the_ID()
the
the_title
过滤器对每个项目应用两次。这就是为什么我们只对奇数情况应用缩略图附加。
还要注意,这种方法假定标题为非空。
否则,只需根据我们的需要创建/扩展一个新的小部件就更灵活了。