Обновление поста Wordpress не обновляет postmeta с помощью WordPress Hook - PullRequest
0 голосов
/ 01 мая 2019

Я хочу обновить значение postmeta для сообщения через ловушку wordpess, но я не могу его обновить. Вот мой код,

function check_values($post_ID, $post_after, $post_before){

     $oldFob = get_post_meta( $post_ID, 'price', true);
     if($oldFob){
         update_post_meta( $post_ID, 'price', 500);
     }else{
         add_post_meta( $post_ID, 'fob-price', 500 , true);
     }
   }

 add_action( 'post_updated', 'check_values', 10, 3 );

Когда я ставлю die вскоре после update_post_meta и проверяю db, он работает, но после возвращения на страницу редактирования редактора возвращается.

В основном это обновление post meta, но после него запускается другая функция wordpress по умолчанию, которая сбрасывает ее на старое значение.

Любое экспертное предложение, почему так происходит ??

1 Ответ

1 голос
/ 01 мая 2019

Проблема в том, что хук post_updated срабатывает до того, как мета поста действительно сохраняется.

Таким образом, в основном вы обновляете мета поста, а затем пост обновляется с использованием мета-значенийв запросе сразу после этого.

Чтобы решить эту проблему, вы можете использовать крюк save_post с большим номером, чтобы приоритет выполнялся в последний раз:

add_action('save_post', function ($post_ID) {
    $oldFob = get_post_meta( $post_ID, 'price', true);

    if ($oldFob) {
        update_post_meta( $post_ID, 'price', 500);
    } else {
        add_post_meta( $post_ID, 'fob-price', 500 , true);
    }
}, 100);

Для болееинформация: https://codex.wordpress.org/Plugin_API/Action_Reference/save_post

...