我使用一个自定义类型的高级自定义字段,以允许用户添加来自前端的帖子。我的更新代码运行得很好。插入新帖子不能正常工作。它只是添加了一个帖子,但没有保存任何数据。
我已经尝试了下面的代码。
function my_acf_save_post( $post_id ) {
if( $post_id != 'new_post' ) {
// Get the selected post status
$value = get_field('post_status_field', $post_id);
// Update current post
$post = array(
'ID' => $post_id,
'post_status' => $value,
'post_title' => $_POST['acf']['_post_title'],
);
// Remove the action to avoid infinite loop
remove_action('acf/save_post', 'my_acf_save_post', 20);
// Update the post into the database
$post_id = wp_update_post( $post );
// Add the action back
do_action('acf/save_post', $post_id, 20);
}else{
// Get the selected post status
$value = get_field('post_status_field', $post_id);
// Update current post
$post = array(
'ID' => $post_id,
'post_status' => $value,
'post_title' => $_POST['acf']['_post_title'],
);
// Remove the action to avoid infinite loop
remove_action('acf/save_post', 'my_acf_save_post', 20);
// Update the post into the database
$post_id = wp_insert_post( $post );
// Add the action back
do_action('acf/save_post', $post_id, 20);
}
return $post_id;
}
// run after ACF saves the $_POST['acf'] data
add_action('acf/save_post', 'my_acf_save_post', 20);
我不能弄清楚,我哪里弄错了。我希望当一个帖子被提交时,所有数据都被提交,当更新时,所有数据都必须更新。
发布于 2019-01-24 00:23:22
有趣的是,我昨天解决了这个问题。当你挂接在'acf/save_post‘上时,你运行的是函数,而自定义字段有旧值,你用$_POST发送新值,但是用get_field()你得到的是旧值:D
$value = get_field('post_status_field', $post_id);
在这两种情况下,您都需要使用,否则您需要按两次更新按钮
$value = $_POST['acf']['FIELD_KEY'];
要让FIELD_KEY完成任务
var_dump( $_POST['acf']); die();
https://stackoverflow.com/questions/54327251
复制相似问题