
您现在的位置是:首页 > WordPress教程WordPress教程
WordPress热门文章显示
WP集市
2025-09-10
【WordPress教程】
764人已围观
-
WordPress搞热门文章显示这事儿吧,本质上就是让文章按被看的次数排队。你想啊,用户点得越多的内容肯定越有料,把它甩到首页侧边栏或者文章底部,新访客一眼就能瞄到热点,站点的黏性自然就上来了。别想太复杂,核心逻辑就是抓取
post_views
这类计数数据然后排序输出——不过WordPress自己没内置这功能,得咱们手动捣鼓几下。 -
先从简单的来:装个插件省事儿。比如「Post Views Counter」这玩意儿,激活后勾选文章类型和计数位置,再往需要显示的地方塞短码就行。但咱是程序员对吧?能代码解决就别点鼠标了。上硬核方案:自己写函数追浏览量。打开主题的functions.php,先埋个计数钩子:
function track_post_views($post_id) {
if (!is_single()) return;
if (empty($post_id)) {
global $post;
$post_id = $post->ID;
}
$count_key = 'post_views_count';
$count = get_post_meta($post_id, $count_key, true);
if ($count == '') {
delete_post_meta($post_id, $count_key);
add_post_meta($post_id, $count_key, '1');
} else {
$count++;
update_post_meta($post_id, $count_key, $count);
}
}
add_action('wp_head', 'track_post_views');
- 这段玩意儿干嘛的呢?每当有人打开文章页,它就给当前文章的自定义字段
post_views_count
塞个数字+1。注意啊,用wp_head
触发意味着得确认主题确实拉了头部输出,不然改写成wp_footer
也行。现在数据有了,但得让人看见对吧?整个函数输出浏览量:
function get_post_views($post_id){
$count_key = 'post_views_count';
$count = get_post_meta($post_id, $count_key, true);
if($count==''){
delete_post_meta($post_id, $count_key);
add_post_meta($post_id, $count_key, '0');
return "0 次阅读";
}
return $count.' 次阅读';
}
- 到这儿单篇文章的计数搞定了。但咱们要的是热门列表啊!关键查询来了:用WP_Query拉取按浏览量降序的文章数组。重点在
meta_key
和orderby
参数:
$popular_query = new WP_Query( array(
'posts_per_page' => 5,
'meta_key' => 'post_views_count',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'post_status' => 'publish'
));
- 注意这里
orderby
得用meta_value_num
而不是meta_value
,因为数字排序和字符串排序差别大了去了!不然会出现浏览量100的文章排在第9篇后面的灵异事件。循环输出就标准模板操作了:
if ($popular_query->have_posts()) {
while ($popular_query->have_posts()) {
$popular_query->the_post();
echo '<li><a href="'.get_permalink().'">'.get_the_title().'</a> ('.get_post_views(get_the_ID()).')</li>';
}
}
wp_reset_postdata();
-
实际应用时你得考虑性能问题。直接查meta表可能慢,尤其数据量大了以后。两种优化思路:一是用缓存插件把整个查询结果缓存起来(比如WP Rocket),二是写个定时任务把浏览量刷到单独表里。不过小站点没必要折腾,meta_query扛万级文章没问题。
-
进阶玩法:按时间维度搞热门。比如「本周热门」就得计算时间戳范围内的浏览量。这时候需要在记录浏览量时同时存时间数据,查询用
meta_query
做时间筛选。或者更野的路子:用Redis之类的内存数据库存计数,不过那就是另一个层面的故事了。 -
最后提醒个细节:调试时候容易发现浏览量莫名暴涨——可能是爬虫在刷或者自己刷新页面导致的。解决方案:在计数函数里加个条件判断排除非人类访问:
if (is_user_logged_in() || is_robot()) return;
当然is_robot()得自己写用户代理解析,懒的话直接排除管理员也行。 -
整套流程串起来:埋点计数 -> 存储数据 -> 查询排序 -> 输出展示。WordPress的灵活性就在这里,既能用插件速成又能自己写代码精细控制。要是主题升级怕代码丢失,建议做成个简单插件或者用Code Snippets这类工具管理。
-
说到底,热门文章功能本质是数据处理的直观呈现。核心思路永远围绕:哪些数据?怎么存?怎么取?怎么显?把握住这四个点,别说WordPress了,换任何平台都能套用类似逻辑实现。甚至还能延展出「相关文章」、「趋势预测」之类的玩法——不过那就是后话了。
Tags:
文章版权声明:除非注明,否则均为WP集市原创文章,转载或复制请以超链接形式并注明出处。
上一篇:WordPress搜索功能添加
下一篇:WordPress相关文章添加

热门文章
