How to Display Popular Posts by Day, Week, Month & All Time in WordPress

How to display popular posts by day, week, month and all time in WordPress

Showing your most popular posts — filtered by day, week, month, or all time — is one of the smartest ways to keep visitors engaged longer, reduce bounce rates, and guide new readers to your best-performing content. with user behavior signals playing a bigger role in Google rankings, displaying trending or evergreen popular content helps improve time-on-site, internal linking, and overall site authority. At Cope Business, we frequently add dynamic “popular posts” sections for clients during our technical SEO audit services to boost engagement and help high-value articles stay visible.

This beginner-friendly guide shows you three easy and effective ways to display popular posts by different time periods in WordPress — using plugins (easiest) and lightweight code (no extra plugin).

Why Display Popular Posts by Time Period?

  • Keeps Content Fresh — Highlights trending articles (day/week) and timeless ones (all time)
  • Improves User Experience — Readers discover what others found valuable
  • Increases Pageviews — More internal clicks → longer sessions
  • SEO Boost — Higher engagement signals + better internal linking
  • Social Proof — “Most popular this week” creates curiosity and trust

Perfect for blogs, news sites, tutorials, or any content-heavy website.

Method 1: Using a Plugin (Easiest & Most Flexible)

Plugins give you beautiful layouts, thumbnails, time-based filtering, and zero coding.

Recommended Plugin: WordPress Popular Posts (Free & Pro)

This is the most popular and reliable plugin for time-based popular posts.

Step-by-Step Setup

  1. Install and activate WordPress Popular Posts from Plugins > Add New.
  2. Go to Settings > WordPress Popular Posts.
  3. In Tools tab → Generate new popular posts data (initial setup).
  4. In Widget tab → Add a new widget to sidebar/footer:
    • Title: “Trending This Week”, “Popular This Month”, etc.
    • Time Range: Last 24 hours, Last 7 days, Last 30 days, All time
    • Post Type: Posts (or pages/custom types)
    • Number of posts: 5–10
    • Sort by: Views
    • Show: Thumbnail, excerpt, author, date, views count
  5. Style: Choose layout (list, grid), thumbnail size, custom CSS if needed.
  6. Save → Drag the widget to your desired sidebar or footer area.
  7. Optional: Use shortcode
[wpp range="weekly" posts_per_page="5" thumbnail_width="150"]

anywhere (posts, pages, custom areas).

Pro Version (~$39/year): Adds custom post types, advanced filters, trending topics widget, REST API.

Pros: Very accurate, multiple time ranges, thumbnails, views counter, shortcode + widget support.
Cons: Free version has basic styling (customize with CSS).

Alternative Plugin: Top 10 – Popular Posts (free) — also supports time ranges and shortcodes.

Method 2: Using Custom Code with WP_Query (Lightweight – No Plugin)

For full control without adding extra plugins.

Steps

  1. Install WPCode (free) from Plugins > Add New — safest way to add code.
  2. Go to Code Snippets > Add Snippet → Create new snippet titled “Recently Popular Posts by Time”.
  3. Paste one of these shortcodes (choose time range):

Weekly Popular Posts (last 7 days)

PHP

function cope_weekly_popular_posts_shortcode($atts) {
    $atts = shortcode_atts(array('number' => 5), $atts);

    $args = array(
        'post_type'      => 'post',
        'posts_per_page' => $atts['number'],
        'meta_key'       => 'views',
        'orderby'        => 'meta_value_num',
        'order'          => 'DESC',
        'date_query'     => array(
            array(
                'after'     => '7 days ago',
                'inclusive' => true,
            ),
        ),
    );

    $query = new WP_Query($args);

    if (!$query->have_posts()) return '<p>No popular posts this week.</p>';

    $output = '<ul class="weekly-popular-posts">';
    while ($query->have_posts()) {
        $query->the_post();
        $output .= '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
    }
    $output .= '</ul>';
    wp_reset_postdata();

    return $output;
}
add_shortcode('weekly_popular', 'cope_weekly_popular_posts_shortcode');

Use shortcode:

[weekly_popular number="6"]

For monthly change ‘7 days ago’ → ’30 days ago’

For all time remove the date_query part entirely.

Pros: Zero extra plugins, fully customizable.
Cons: Needs a views counter plugin (e.g., Post Views Counter – free) to track views.

Method 3: Using Widgets or Shortcodes with Plugins (Visual & Fast)

  • Recent Posts Widget Extended (free): Set “orderby=modified” or use views if you have a counter.
  • Display Posts shortcode:
[display-posts orderby="modified" order="DESC" posts_per_page="5"]

Best Practices for Popular Posts Sections

  • Limit Number — 5–8 posts to avoid clutter
  • Show Thumbnails — Increases click-through rate
  • Add Date/Views — Builds trust (“Updated 2 days ago”, “1.2K views”)
  • Mobile-Friendly — Ensure responsive layout
  • Performance — Use caching; lazy-load thumbnails
  • SEO — Use descriptive headings; add internal links

Highlighting popular content keeps your site feeling active and valuable.

Final Thoughts

Displaying recently updated or most popular posts in WordPress is a simple yet powerful way to showcase fresh content, improve engagement, and signal to Google that your site is actively maintained. Use WordPress Popular Posts for beautiful, time-filtered lists — or lightweight shortcodes if you want no extra plugins.

Freshness still matters — use it to your advantage.

Need help adding dynamic content sections, optimizing your blog for SEO, or improving overall site performance? Contact Cope Business for a free technical SEO consultation — we’ll review your site and implement tailored improvements to keep your content visible and valuable.

Was this article helpful?
YesNo