我正在尝试显示博客页面上每个帖子的帖子视图(所以在循环中)。
我在函数中使用以下代码进行了尝试。php:
// function to count views.
function setAndViewPostViews($postID) {
$count_key = \'views\';
$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);
}
return $count; /* so you can show it */
}
然后在循环函数中,我使用了以下代码:
<?php echo setAndViewPostViews(get_the_ID()); ?>
然而,每次重新加载博客页面时,每个帖子都会添加一个计数,奇怪的是,每个帖子的id都不同。我如何才能做到这一点,它将只计算每个帖子?如果可能的话,我该如何使它只统计每个人的观点呢?
提前感谢!
顺便说一句,我知道有很多插件可以做到这一点,我不打算使用,所以请不要推荐插件。
SO网友:birgire
Few remarks:
<例如,您应该考虑在元键上使用前缀
lars_views
, 最大限度地减少其他插件干扰它的风险。
如果要在编辑屏幕中隐藏它,可以使用下划线:_lars_views
.
考虑将更新计数器的代码部分包装为if( is_single() ){...}
. 这会将其限制为单个帖子视图。More about this conditional tag in the Codex. 如果您有自定义的帖子类型,请考虑is_singular()
.
您可以使用0
, 但我认为从一开始就更准确1
相反,当您使用is_single()
.
您可以使用update_post_meta()
而不是add_post_meta()
, 如果您想简化代码。Check out the Codex,
我希望有一个单独的函数来显示计数,另一个函数通过一些钩子来更新计数器。我认为它更灵活。
希望这能有所帮助。