Count post views in loop

时间:2013-11-25 作者:Trekdrop

我正在尝试显示博客页面上每个帖子的帖子视图(所以在循环中)。

我在函数中使用以下代码进行了尝试。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都不同。我如何才能做到这一点,它将只计算每个帖子?如果可能的话,我该如何使它只统计每个人的观点呢?

提前感谢!

顺便说一句,我知道有很多插件可以做到这一点,我不打算使用,所以请不要推荐插件。

1 个回复
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,

我希望有一个单独的函数来显示计数,另一个函数通过一些钩子来更新计数器。我认为它更灵活。

希望这能有所帮助。

结束

相关推荐

Add filter to comments loop?

我正在制作一个插件,用于存储推荐人数据以供评论。我已经创建了数据库表,并且在进行注释时正确存储了数据。现在,我想为每个注释在注释块上附加一个自定义div。如何向注释循环添加过滤器?我想说“如果这个评论ID在我的表中有一个推荐人,那么在我的特殊div中打印出推荐人”。我可以自己写函数,我只需要在哪里注入函数的帮助。