update_post_meta 在 save_post 挂钩中不起作用

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

我试图在保存 POST 时更新其中的自定义字段(订单)。 根据我的日志,一切都运行顺利,即使函数返回 true,但值并没有按应有的方式改变。

这是我的代码:

function update_on_save($post_id) {
    error_log("fonction post_id :".$post_id);
     // Enregistrement automatique = on sort
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }
    if ($post_id && get_post_type($post_id) == 'post') {
        if(in_category('Orquera Listings',$post_id)) {
            $status = get_post_meta($post_id,'status', true);   
            error_log("status :".$status);

            switch ($status) {
                case 'Pending':
                    $order = 1;
                    break;
                 case 'For Sale':
                    $order = 2;
                    break;
                case 'Sold':
                    $order = 3;
                    break;
                default:
                    $order = 4;
            }
            
            error_log("order : ".$order);
            $result = update_post_meta($post_id, 'order', $order);
            error_log('result :'.$result);

        }
    }
}
add_action('save_post', 'update_on_save', 90,1);

我的日志给了我:

  • 功能post_id:47377
  • 状态:已售出
  • 订单:3
  • 结果:1

这就是我想要的,这里,order应该设置为3,但是我的数据没有更新。

我做错了什么?

我尝试了很多东西,甚至尝试使用wp_after_insert_post,但到目前为止我的“订单”字段还没有移动一英寸。

添加参数:$result = update_post_meta($post_id, 'order', $order,$old_order);

更改优先级...

编辑:

我尝试过这个: $wpdb->update($wpdb->prefix.'postmeta', array('meta_value' => $order), array('post_id' => $post_id,'meta_key' => 'order')); $order_db = get_post_meta($post_id,'order', true);
error_log('order_db :'.$order_db);

按顺序显示 3。我觉得当我更新表单时,该值又被保存了。 “订单”字段可以编辑,但我想强制该值。

需要明确的是:我正在保存帖子,并将 30 放入订单字段中进行测试。但由于 save_post,这个值将被我的代码片段覆盖。我感觉它已经更新了,但是我在 BO 字段中输入的值会覆盖它并在之后再次保存。

php wordpress wordpress-hook
1个回答
0
投票

我能够解决这个问题,这就是我所做的:

add_action('acf/save_post', 'my_acf_save_post', 5);

$status = $_POST['acf']['field_64a6b0ced7f03']; // to get a value

$_POST['acf']['field_66193c3aec000'] = $order; // to put a value inside the field
© www.soinside.com 2019 - 2024. All rights reserved.