Last active
May 16, 2021 12:20
-
-
Save mikeoberdick/62ac5adb02a6502a29ff58a482127170 to your computer and use it in GitHub Desktop.
Track post views and then sort by post views in order to display most read posts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Add a new post meta column for post views | |
function wpb_set_post_views($postID) { | |
$count_key = 'wpb_post_views_count'; | |
$count = get_post_meta($postID, $count_key, true); | |
if($count==''){ | |
$count = 0; | |
delete_post_meta($postID, $count_key); | |
add_post_meta($postID, $count_key, '0'); | |
} else{ | |
$count++; | |
update_post_meta($postID, $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); | |
//Add a post view upon viewing a single post page | |
function wpb_track_post_views ($post_id) { | |
if ( !is_single() || is_user_logged_in() ) return; | |
if ( empty ( $post_id) ) { | |
global $post; | |
$post_id = $post->ID; | |
} | |
wpb_set_post_views($post_id); | |
} | |
add_action( 'wp_head', 'wpb_track_post_views'); | |
//SHOW POSTS BY COUNT | |
function wpb_get_post_views($postID){ | |
$count_key = 'wpb_post_views_count'; | |
$count = get_post_meta($postID, $count_key, true); | |
if($count==''){ | |
delete_post_meta($postID, $count_key); | |
add_post_meta($postID, $count_key, '0'); | |
return "0 View"; | |
} | |
return $count.' Views'; | |
} | |
wpb_get_post_views(get_the_ID()); | |
OR IN A LOOP | |
$popularpost = new WP_Query( array( 'posts_per_page' => 3, 'meta_key' => 'wpb_post_views_count', 'orderby' => 'meta_value_num', 'order' => 'DESC' ) ); | |
while ( $popularpost->have_posts() ) : $popularpost->the_post(); | |
the_title(); | |
endwhile; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment