【问题标题】:Wordpress post update not updating postmeta by wordpress hookWordpress 发布更新不通过 wordpress 钩子更新 postmeta
【发布时间】:2019-05-01 21:17:38
【问题描述】:

我想通过 wordpess 钩子更新帖子的 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 之后不久将 die 并检查 db 时,它可以工作,但在返回编辑帖子页面后,它会恢复。

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

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

【问题讨论】:

    标签: php wordpress post-meta


    【解决方案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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-15
    • 2013-12-11
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    相关资源
    最近更新 更多