我试图在保存 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);
我的日志给了我:
这就是我想要的,这里,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 字段中输入的值会覆盖它并在之后再次保存。
我能够解决这个问题,这就是我所做的:
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