我的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 />";
}
}
}
}
主要问题是action:saveNoteCommand执行两次我按下Save Command。第一次执行是好的,但第二次执行在MySQL中生成错误(重复键主要)。我不明白为什么wordpress执行两次为一个动作注册的单个函数,我认为这个问题通常在wordpress中。此操作中声明的所有函数都会执行两次。
有人可以帮我解决这个问题,或者告诉我,如果我错了什么
答案 0 :(得分:0)
它可能会执行两次,因为WP正在保存两个不同的帖子,这些帖子用你的程序两次触发动作:
假设是这样,您需要检查传递给调用您的操作的内容的ID是否为修订版。
答案 1 :(得分:0)
我的应用程序与wordpress中的帖子没有任何关系。在其他目录中,有其他结构。 save_otet / update_post上未执行操作saveNoteCommand。是仅在我的脚本中执行的自定义操作,只有$ _POST数据被提交。