2015-02-19 2 views
0

Когда я запускаю следующий кусок действия при сохранении сообщения без выхода, Wordpress перезаписывает значения, установленные для некоторых полей (не все). Особенно ключ _variable_pricing. Когда я устанавливаю выход; после этой функции и предотвращения Wordpress для завершения всего действия поле будет правильно обновлено в базе данных. Кажется, что что-то не так в порядке?Wordpress save post action перезаписывает сообщение meta update

function edit_photo_meta($post_id) 
{ 
    # Update meta 
    //... other fields to update 
    update_post_meta($post_id, '_variable_pricing', 1); 
    exit; 
} 
add_action('save_post', 'edit_photo_meta') 

Спасибо!

ответ

0

Возможно автосохранение.

Попробуйте

if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) 
    return; 

в функции edit_photo_meta

+0

спасибо за ответ, значение ключа «_variable_pricing» по-прежнему остается «0». Когда я делаю выход; он остается на «1», но я, конечно, нарушаю функцию. – directory

+0

У вас есть тест, чтобы пропустить автосохранение сообщения? – Daschmi

+0

Да, я добавил ваш код к функции для тестирования :) .. Я попытался на редактирование сообщения, но не повезло – directory

0

Вероятно порядок крючками действий. Вы лучше закреплять обновленного мета:

add_action('updated_post_meta', 'override_post_meta', 10, 4); 
function override_post_meta($meta_id, $post_id, $meta_key, &$meta_value) 
{ 
    if ('_variable_pricing' == $meta_key) { 
     update_post_meta($post_id, '_variable_pricing', 1);; 
    } 
} 

Этот крючок называется после мета обновляется, поэтому он отменяет предыдущее значение.

+0

.. string (17) "_variable_pricing" .... int (1) ... является var_dump вывод. Он был установлен, но все еще в базе данных у меня есть значение 0. Крюк, похоже, был ранним и был перезаписан – directory

+0

Я взглянул на код и обновил ответ. Оказывается, WordPress игнорировал изменения. Существует один крючок с почти тем же именем (обновленный с помощью d вместо обновления) с теми же параметрами. Вы можете все это и фактически обновлять мета, как вы это делали раньше. – bobdye

Смежные вопросы