我使用此代码(与另一个一起显示结果)为每个Wordpress帖子的访问者计数器。
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;}
它工作正常,但每次刷新页面时都会计算一次访问次数。
有人可以引导我查看我需要做同样的代码,但只计算一次IP访问或一些技巧,至少让我不让某人不用反复的F5来滥用计数器。
感谢。
答案 0 :(得分:0)
像@rtfm提到的那样,IP!=人。
但是如果你想要计算访问过的唯一IP,你应该考虑改变$count_key
来存储IP,而不是存储计数器。只需使用密钥为IP地址的数组。只要您需要该值,只需执行count($count_key);
不知道wordpress是否允许使用add_post_meta()
存储数组,但如果不存在,则可以使用json_encode()
和json_decode()
存储数据。
答案 1 :(得分:0)
您可以通过IP计算访问次数,但这需要保留一个包含IP地址和每个地址计数的大型数组。是的,您可以通过add_post_meta()将其存储在数组中,但数据库大小会快速增长并且性能会下降。
你能做什么 - 只需使用cookies。当新访客来时,增加计数并为他设置无尽的cookie。当他按下F5时,您将看到已经设置了cookie并且不增加计数器。