WordPress 获取文章当日浏览量的排行榜
WordPress 获取所有文章当日浏览量,列出当日浏览量排行前10的文章列表。
首先设计一个统计函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 | //用于统计当日浏览量,放置于function文件中 function increaseTodayPostViews($postID) { $count_key = '_post_today_view_count'; $count = get_post_meta($postID, $count_key, true); if($count==''){ $count = 1; delete_post_meta($postID, $count_key); add_post_meta($postID, $count_key, $count); } else { $count++; update_post_meta($postID, $count_key, $count); } } |
然后将统计函数放置需要统计的页面中:
1 2 3 4 | <?php //用于更新当日的浏览量,一般放置single文件中 increaseTodayPostViews(get_the_ID()); ?> |
博主这里需要的是当日的浏览量前10的排行榜,所以设置了一个定时器,每日0点,清除前一日统计到的浏览量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // 激活定时事件 function activate_daily_views_reset() { if ( ! wp_next_scheduled( 'daily_views_reset_event' ) ) { // 每天0点执行 wp_schedule_event( strtotime('midnight'), 'daily', 'daily_views_reset_event' ); } } add_action('wp', 'activate_daily_views_reset'); // 重置当日浏览量 function reset_daily_post_views() { $args = array( 'post_type' => 'post', // 文章类型 'posts_per_page' => -1, // 获取所有文章 ); $posts = get_posts( $args ); foreach( $posts as $post ) { delete_post_meta( $post->ID, '_post_today_view_count' ); // 删除当日浏览量 } } add_action('daily_views_reset_event', 'reset_daily_post_views'); |
最后前端页面获取当日浏览量前10排行榜。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <ul> <div > <?php $posts = array( 'ignore_sticky_posts' => 1, "meta_key" => '_post_today_view_count', "orderby" => 'meta_value_num', "order" => 'DESC', 'posts_per_page' => 10, ); query_posts($posts); while (have_posts()) : the_post();?> <li><a title="<?php the_title(); ?>" href="<?php the_permalink(); ?>"> <p><?php the_title(); ?></p></a></li> <?php endwhile;wp_reset_query();?> </div> </ul> |