修改最近发布的侧边栏,以显示不带插件的发布大拇指

时间:2015-12-30 作者:Pablo Levin

嗨,我正在使用Underocres创建一个主题。我需要将帖子缩略图添加到最近的帖子小部件中,但我被卡住了。我尝试了下面的代码,但我得到了一个复制的最近帖子小部件,一个没有缩略图图像,另一个有缩略图图像。

我知道这是因为我没有修改原来的最近发布的小部件,而是添加了另一个。我的问题是:我如何修改wordpress core最近的帖子,在标题前显示帖子缩略图。这就是我正在尝试的结果,它复制了一个最近发布的小部件。

<div id="secondary" class="widget-area" role="complementary">
        <?php dynamic_sidebar( \'sidebar-1\' ); ?>

        <?php $recent_posts = wp_get_recent_posts();
        foreach( $recent_posts as $recent ){
            if($recent[\'post_status\']=="publish"){
                if ( has_post_thumbnail($recent["ID"])) {
                        echo \'<li><a href="\' . get_permalink($recent["ID"]) . \'" title="\'.esc_attr($recent["post_title"]).\'" >\' .   get_the_post_thumbnail($recent["ID"], \'thumbnail\'). $recent["post_title"].\'</a></li> \';
                }else{
                        echo \'<li><a href="\' . get_permalink($recent["ID"]) . \'" title="\'.esc_attr($recent["post_title"]).\'" >\' .   $recent["post_title"].\'</a></li> \';
                }
             }
        }
        ?>
</div><!-- #secondary -->

1 个回复
SO网友:Pablo Levin

以下是解决方案

/**
 * Extend Recent Posts Widget 
 *
 * Adds different formatting to the default WordPress Recent Posts Widget
 */

Class My_Recent_Posts_Widget extends WP_Widget_Recent_Posts {

        function widget($args, $instance) {

                if ( ! isset( $args[\'widget_id\'] ) ) {
                $args[\'widget_id\'] = $this->id;
            }

            $title = ( ! empty( $instance[\'title\'] ) ) ? $instance[\'title\'] : __( \'Recent Posts\' );

            /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
            $title = apply_filters( \'widget_title\', $title, $instance, $this->id_base );

            $number = ( ! empty( $instance[\'number\'] ) ) ? absint( $instance[\'number\'] ) : 5;
            if ( ! $number )
                $number = 5;
            $show_date = isset( $instance[\'show_date\'] ) ? $instance[\'show_date\'] : false;

            /**
             * Filter the arguments for the Recent Posts widget.
             *
             * @since 3.4.0
             *
             * @see WP_Query::get_posts()
             *
             * @param array $args An array of arguments used to retrieve the recent posts.
             */
            $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\'];
            } ?>
            <ul>
            <?php while ( $r->have_posts() ) : $r->the_post(); ?>
                <li>
                    <?php the_post_thumbnail(); ?>
                    <a href="<?php the_permalink(); ?>"><?php get_the_title() ? the_title() : the_ID(); ?></a>
                <?php if ( $show_date ) : ?>
                    <span class="post-date"><?php echo get_the_date(); ?></span>
                <?php endif; ?>
                </li>
            <?php endwhile; ?>
            </ul>
            <?php echo $args[\'after_widget\']; ?>
            <?php
            // Reset the global $the_post as this query will have stomped on it
            wp_reset_postdata();

            endif;
        }
}
function my_recent_widget_registration() {
  unregister_widget(\'WP_Widget_Recent_Posts\');
  register_widget(\'My_Recent_Posts_Widget\');
}
add_action(\'widgets_init\', \'my_recent_widget_registration\');

相关推荐

Dynamic Width of Widgets

好的,我在一个侧边栏中为最多6个小部件使用以下代码function s57d_sidebar1_params($params) { $sidebar_id = $params[0][\'id\']; if ( $sidebar_id == \'sidebar-1\' ) { $total_widgets = wp_get_sidebars_widgets(); $sidebar_widgets = count($total_wi