我有一个简单的函数,每次用户访问页面时都应该在wp_postmeta表中为页面视图添加1。问题是在chrome中,每次访问页面时,数字会增加2。我最初是在分类页面上完成的,每次访问时这个数字实际上增加了4。我使用的代码如下,来自http://wpsnipp.com/index.php/functions-php/track-post-views-without-a-plugin-using-post-meta/
function getPostViews($postID){
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if($count==''){
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
return "0 View";
}
return $count.' Views';
}
function setPostViews($postID) {
$count_key = 'post_views_count';
$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);
}
}
// Remove issues with prefetching adding extra views
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
答案 0 :(得分:2)
事实证明,问题实际上是没有设置路径的快捷方式图标。由于没有设置路径,Chrome实际上会尝试再次点击同一页面以获取快捷方式图标。以下行是我的header.php文件中的问题:
<link rel="shortcut icon" href="" />
删除此行可解决问题。
答案 1 :(得分:0)
您需要在循环外添加getPostViews(get_the_ID());
并在循环内添加setPostViews(get_the_ID());
以获得实际计数。
参见下面的代码块,我用了二十四个主题:
<?php
echo getPostViews(get_the_ID());
// Start the Loop.
while ( have_posts() ) : the_post();
setPostViews(get_the_ID());
// Include the page content template.
get_template_part( 'content', 'page' );
endwhile;
?>