Creating a list of most popular posts of the past week - Wordpress
        Posted  
        
            by 
                Gary Woods
            
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Gary Woods
        
        
        
        Published on 2012-12-11T15:59:53Z
        Indexed on 
            2012/12/11
            17:03 UTC
        
        
        Read the original article
        Hit count: 429
        
I have created a widget for my Wordpress platform that displays the most popular posts of the week. However, there is an issue with it. It counts the most popular posts from Monday, not the past 7 days. For instance, this means that on Tuesday, it will only include posts from Tuesday and Monday.
Here is my widget code:
<?php class PopularWidget extends WP_Widget
{
    function PopularWidget(){
        $widget_ops = array('description' => 'Displays Popular Posts');
        $control_ops = array('width' => 400, 'height' => 300);
        parent::WP_Widget(false,$name='ET Popular Widget',$widget_ops,$control_ops);
    }
  /* Displays the Widget in the front-end */
    function widget($args, $instance){
        extract($args);
        $title = apply_filters('widget_title', empty($instance['title']) ? 'Popular This Week' : $instance['title']);
        $postsNum = empty($instance['postsNum']) ? '' : $instance['postsNum'];
        $show_thisweek = isset($instance['thisweek']) ? (bool) $instance['thisweek'] : false;
        echo $before_widget;
        if ( $title )
        echo $before_title . $title . $after_title;
?>
<?php
    $additional_query = $show_thisweek ? '&year=' . date('Y') . '&w=' . date('W') : '';
    query_posts( 'post_type=post&posts_per_page='.$postsNum.'&orderby=comment_count&order=DESC' . $additional_query ); ?>
        <div class="widget-aligned">
        <h3 class="box-title">Popular Articles</h3>
        <div class="blog-entry">
            <ol>
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
            <li><h4 class="title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4></li>
    <?php endwhile; endif; wp_reset_query(); ?>
            </ol>
        </div>
        </div> <!-- end widget-aligned -->
        <div style="clear:both;"></div>
<?php
        echo $after_widget;
    }
  /*Saves the settings. */
    function update($new_instance, $old_instance){
        $instance = $old_instance;
        $instance['title'] = stripslashes($new_instance['title']);
        $instance['postsNum'] = stripslashes($new_instance['postsNum']);
        $instance['thisweek'] = 0;
        if ( isset($new_instance['thisweek']) ) $instance['thisweek'] = 1;
        return $instance;
    }
  /*Creates the form for the widget in the back-end. */
    function form($instance){
        //Defaults
        $instance = wp_parse_args( (array) $instance, array('title'=>'Popular Posts', 'postsNum'=>'','thisweek'=>false) );
        $title = htmlspecialchars($instance['title']);
        $postsNum = htmlspecialchars($instance['postsNum']);
        # Title
        echo '<p><label for="' . $this->get_field_id('title') . '">' . 'Title:' . '</label><input class="widefat" id="' . $this->get_field_id('title') . '" name="' . $this->get_field_name('title') . '" type="text" value="' . $title . '" /></p>';
        # Number of posts
        echo '<p><label for="' . $this->get_field_id('postsNum') . '">' . 'Number of posts:' . '</label><input class="widefat" id="' . $this->get_field_id('postsNum') . '" name="' . $this->get_field_name('postsNum') . '" type="text" value="' . $postsNum . '" /></p>';  ?>
        <input class="checkbox" type="checkbox" <?php checked($instance['thisweek'], 1) ?> id="<?php echo $this->get_field_id('thisweek'); ?>" name="<?php echo $this->get_field_name('thisweek'); ?>" />
        <label for="<?php echo $this->get_field_id('thisweek'); ?>"><?php esc_html_e('Popular this week','Aggregate'); ?></label>
        <?php
    }
}// end AboutMeWidget class
function PopularWidgetInit() {
  register_widget('PopularWidget');
}
add_action('widgets_init', 'PopularWidgetInit');
?>
How can I change this script so that it will count the past 7 days rather than posts from last Monday?
© Stack Overflow or respective owner