Wordpress插入查询运行3次

时间:2014-08-06 11:55:17

标签: php mysql wordpress

我创建了以下函数来跟踪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页,它似乎只计算两个页面而不是当前页面。如何只计算当前页面?

3 个答案:

答案 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;查询,因此它与代码中的那个一起执行。