У меня есть большая проблема с wp.4.0.1. Я делаю для клиента программное обеспечение управляющей компании, и все основывается на функциях wordpress/плагинах/действиях &.Пользовательские действия/фильтры 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, который выполняется дважды, я нажимаю Save Command. Первое исполнение выполнено нормально, но второе генерирует ошибку в MySQL (дубликат основного ключа). Я не понимаю, почему wordpress выполнил дважды одну функцию, зарегистрированную для действия, и я думаю, что эта проблема обычно находится в wordpress. Все функции, объявленные в этом действии, выполняются дважды.
Может кто-нибудь поможет мне это исправить, или сказать мне, если я неправильно что-то
Почему у вас есть 'add_action()' внутри самой функции? – rnevius