Cit*_* SP 0 php mysql wordpress
我做了以下功能来跟踪 Wordpress 帖子或页面的视图。奇怪的是插入查询运行了 3 次而不是一次。
我尝试使用以下操作挂钩解决此问题,但到目前为止没有结果。
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
Run Code Online (Sandbox Code Playgroud)
我的代码:
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);
});
Run Code Online (Sandbox Code Playgroud)
更新: 如果我从第 X 页转到第 Y 页,它似乎计算两个页面,而不是仅计算当前页面。如何只计算当前页面?
小智 5
我遇到了完全相同的问题...这是 Yoast SEO 插件。
我禁用了所有插件(除了 Exec-PHP,v4.9)并且代码运行良好。在 WP 的全新安装上分别测试了所有 11 个其他插件后 - 只是 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`)
)
Run Code Online (Sandbox Code Playgroud)
WP PAGE CODE(将单条记录写入自定义表):
<?php
global $wpdb;
$wpdb->insert( dk_test_table, array( 'value1' => "1", 'value2' => "2"));
?>
Run Code Online (Sandbox Code Playgroud)
禁用 Yoast SEO 插件,查看页面,插入 1 条记录。
启用 Yoast SEO 插件,查看页面,插入 3 个相同的记录。
WP 版本:4.7.3
Yoast SEO 版本:4.4
我希望这可以帮助那里的人!