Display Popular Posts by Views in WordPress without a Plugin

If you don't have comments on a post then how to order post by popularity? Why not order it by view count with a simple hack!

By default WordPress does not allow to show or order post by views, so we have to use a little trick which can make our blog a much more lively.
So let get started, first, we ‘ll create a custom post meta as whpp_track_post_views, then on every post visit we have to increase the counter by one.

<?php

function whpp_track_post_views($post_id) {
    if (!is_single())
        return;
    if (empty($post_id)) {
        global $post;
        $post_id = $post->ID;
    }
    whpp_set_post_views($post_id);
}

add_action(‘wp_head’, ‘whpp_track_post_views’);

function whpp_set_post_views($post_id) {
    $count_key = ‘whpp_track_post_views’;
    $count = get_post_meta($post_id, $count_key, TRUE);
    if ($count == ”) {
        $count = 0;
        delete_post_meta($post_id, $count_key);
        add_post_meta($post_id, $count_key, ‘0’);
    } else {
        $count++;
        update_post_meta($post_id, $count_key, $count);
    }
}

//To keep the count accurate, lets get rid of prefetching
remove_action(‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0);

USAGE
Now that we have set the custom post meta we need to add following code in WP_Query to short post my view

<?php
$args = [
//…
‘meta_key’ => ‘whpp_track_post_views’,
‘orderby’ => ‘meta_value_num’,
‘order’ => ‘DESC’,
//…
];

$query = new WP_Query($args);

//…
//…

Some of the related question in StackOverflow, which might come handy:
Default image

Raunak Gupta

I'm an expert Laravel, WooCommerce, WordPress theme and plugin developer, over the time I have developed several sites and applications. I like to help the upcoming developer, So I share my experience through this blog.

Articles: 20

One comment

Leave a Reply