WordPress Post Update不通过WordPress Hook更新PostMeta



我想更新Wordpess Hook的帖子的PostMeta值,但我无法对其进行更新。这是我的代码

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 );

当我在update_post_meta之后不久将死亡放置并检查DB时,它可以正常工作,但是回到编辑帖子页面后,它会恢复。

基本上它正在更新帖子meta,但是之后,还有另一个默认的wordpress函数运行并将其重置为旧值。

任何专家建议,为什么会这样?

问题是因为在实际保存帖子的metas之前触发了钩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

最新更新