gpt4 book ai didi

php - WordPress 自定义操作/过滤器执行两次

转载 作者:行者123 更新时间:2023-11-29 23:20:05 26 4
gpt4 key购买 nike

我对 wp.4.0.1 有一个大问题。我为客户制作了一个管理公司软件,一切都基于 WordPress 功能/插件/操作等。

class AppNoteCommand{
function AppNoteCommand() {
$this->table_note = 'wp_app_noteCommand';
$this->table_stock = 'wp_app_products_stock';
$this->instance = $this;

add_action( 'saveNoteCommand', array( $this, 'hookSaveNoteCommand'), 10, 4);
add_action( 'saveNoteCommand', array( $this, 'updatingStock' ), 20, 4);
}
function hookSaveNoteCommand( $noteFields, $clientFields, $stockFields, $dbAction ) {
global $wpdb;
printr($noteFields);
if ( $dbAction == 'update' && (int) $noteFields['id'] >0 ) {
$wpdb->update( $this->table_note, $noteFields, array( 'id' => $noteFields['id']) );
} else $wpdb->insert( $this->table_note, $noteFields );
}
function updatingStock( $noteFields, $clientFields, $stockFields, $dbAction) {
global $wpdb;
printr($stockFields);
if ( $dbAction != 'update' ) {
foreach ( $stockFields['products'] as $product_id=>$stock ) {
$wpdb->query("UPDATE {$this->table_stock} SET stock=stock-{$stock} WHERE product_id='{$product_id}' AND location_id='{$stockFields['location_id']}'");
echo mysql_error()."<br />";
}
}
}
}

主要问题是操作:saveNoteCommand,在我按下“保存命令”时执行了两次。第一次执行没问题,但第二次在 MySQL 中生成错误(重复键主)。我不明白为什么 wordpress 执行两次为一个操作注册的单个函数,我认为这个问题通常出现在 wordpress 中。此操作中声明的所有函数都会执行两次。

有人可以帮我解决这个问题,或者告诉我我是否做错了什么

最佳答案

它可能会执行两次,因为 WP 正在保存两个不同的帖子,这实际上是用您的程序触发了两次操作:

  • 新版本中的帖子即帖子本身
  • 旧版本的帖子作为修订版

假设是这样,您需要检查传递给调用您的操作的 ID 是否是修订版本。

关于php - WordPress 自定义操作/过滤器执行两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27399515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com