我创建了以下函数来跟踪Wordpress帖子或页面的视图。奇怪的是插入查询运行三次而不是一次。
我尝试使用以下操作挂钩解决此问题,但到目前为止没有结果。
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
我的代码:
add_action('wp_footer',function(){
global $wpdb;
global $wp_query;
$post_id = $wp_query->post->ID;
$count ='1';
$datetime = date("Y-m-d H:i:s");
$sql = $wpdb->prepare("INSERT IGNORE INTO track_views (datetime, count, post_id)
VALUES (%s, %d, %d)
ON DUPLICATE KEY UPDATE count = count +1",
$datetime, $count, $post_id);
$wpdb->query($sql);
});
更新 如果我从第X页到第Y页,它似乎只计算两个页面而不是当前页面。如何只计算当前页面?
答案 0 :(得分:3)
我有完全相同的问题......这是Yoast SEO插件。
我禁用了所有插件(Exec-PHP,v4.9除外),代码运行正常。在一个干净的WP安装上分别测试了所有其他11个插件 - JUST启用了Yoast SEO插件+ Exec-PHP插件导致3记录现象。
数据库表结构:
CREATE TABLE `dk_test_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`value1` int(11) NOT NULL,
`value2` int(11) NOT NULL,
PRIMARY KEY (`id`)
)
WP PAGE CODE(将单个记录写入自定义表格):
<?php
global $wpdb;
$wpdb->insert( dk_test_table, array( 'value1' => "1", 'value2' => "2"));
?>
已停用Yoast SEO插件,查看页面,已插入1条记录 启用了Yoast SEO插件,查看页面,插入了3个相同的记录。
WP版本:4.7.3
Yoast SEO版本:4.4
我希望这可以帮助那些人!
答案 1 :(得分:0)
我不知道是不是这样,但你在哪里有“add_action”功能?根据这个:https://wordpress.stackexchange.com/questions/21941/wp-footer-hook-running-twice,你应该在Widget类之外调用add_action()。
答案 2 :(得分:0)
我的问题是在表达式断点处。 我在Eclipse的表达式窗口中放置了$ wpdb-&gt;查询,因此它与代码中的那个一起执行。