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' =&gt; 'post', // 文章类型
'posts_per_page' =&gt; -1, // 获取所有文章
);
$posts = get_posts( $args );
foreach( $posts as $post ) {
delete_post_meta( $post-&gt;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>