【问题标题】:Wordpress insert query runs 3 timesWordpress 插入查询运行 3 次
【发布时间】:2014-08-06 11:55:17
【问题描述】:

我创建了以下函数来跟踪 Wordpress 帖子或页面的浏览量。奇怪的是插入查询运行了 3 次而不是 1 次。

我尝试使用以下操作挂钩来解决此问题,但到目前为止没有结果。

 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 页,它似乎计算两个页面而不是只计算当前页面。如何只统计当前页面?

【问题讨论】:

标签: php mysql wordpress


【解决方案1】:

我遇到了完全相同的问题...这是 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`)
)

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

我希望这对那里的人有所帮助!

【讨论】:

  • 也发生在我身上。 WP 4.8,Yoast 5.1 版
  • 非常感谢。我花了 5 天时间才明​​白 Yoast 是问题所在
  • 您是否找到了不禁用 YOAST SEO 的解决方案?
  • 在我的例子中,它是 amp 插件。每次刷新页面时它都会插入数据 5 次
  • 2021,问题依然存在。谢谢(你的)信息。在我的情况下,我对“the_post”的自定义操作被触发了 3 次。停用 YOAST 解决了这个问题。
【解决方案2】:

我不知道是不是这样,但是您的“add_action”功能在哪里?据此:https://wordpress.stackexchange.com/questions/21941/wp-footer-hook-running-twice,您应该在 Widget 类之外调用 add_action()。

【讨论】:

    【解决方案3】:

    我的问题出在表达式断点处。 我将 $wpdb->query 放在 Eclipse 的表达式窗口中,以便它与代码中的那个一起执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      • 2015-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多