Wordpress帖子更新不通过wordpress钩更新postmeta

问题描述 投票:0回答:1

我想通过wordpress钩子更新帖子的元值,但我无法更新它。这是我的代码,

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之后很快就死了,并检查数据库,它可以工作,但在回到编辑帖子页面后,它还原。

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

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

php wordpress post-meta
1个回答
1
投票

问题是因为钩子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

© www.soinside.com 2019 - 2024. All rights reserved.