Show most popular WordPress posts without a plugin

Heres a little trick on how to show a list of the most popular WordPress post by post read count – without using a plugin.

Add this code to your functions.php file.

function count_post_visits() {
	if( is_single() ) {
		global $post;
		$views = get_post_meta( $post->ID, 'my_post_viewed', true );
		if( $views == '' ) {
			update_post_meta( $post->ID, 'my_post_viewed', '1' );	
		} else {
			$views_no = intval( $views );
			update_post_meta( $post->ID, 'my_post_viewed', ++$views_no );
add_action( 'wp_head', 'count_post_visits' );

Then add this anywhere in your template where you wish to display the posts.

$popular_posts_args = array(
	'posts_per_page' => 3,
	'meta_key' => 'my_post_viewed',
	'orderby' => 'meta_value_num',
	'order'=> 'DESC'
$popular_posts_loop = new WP_Query( $popular_posts_args );
while( $popular_posts_loop->have_posts() ):
	// Loop continues

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Do NOT follow this link or you will be banned from the site!
%d bloggers like this: