Php 在前端使用ACF提交新邮件时出现问题
我使用高级自定义字段作为自定义帖子类型,以允许用户从前端添加帖子。我的更新代码运行良好。插入新帖子效果不好。它只是添加了一个帖子,但没有保存任何数据 我尝试了以下代码Php 在前端使用ACF提交新邮件时出现问题,php,wordpress,Php,Wordpress,我使用高级自定义字段作为自定义帖子类型,以允许用户从前端添加帖子。我的更新代码运行良好。插入新帖子效果不好。它只是添加了一个帖子,但没有保存任何数据 我尝试了以下代码 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);
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);
我不知道我错在哪里。我想当一篇文章被提交时,所有的数据都被提交,当更新时,所有的数据都必须更新。有趣的是,我昨天解决了这个问题。 当您挂接“acf/save_post”时,您正在运行函数,而自定义字段有旧值,则使用$_post发送新值,而使用get_field()发送旧值:D 所以相反
$value = get_field('post_status_field', $post_id);
在这两种情况下都需要使用,否则需要按两次更新按钮
$value = $_POST['acf']['FIELD_KEY'];
要获取字段,请执行以下操作
var_dump( $_POST['acf']); die();
现在,它正在保存两条记录。我是否只需要更改$value?还有什么别的吗?你能更新我的代码吗?我想从前端添加一个新帖子并更新现有帖子。整个函数与帖子创建/更新挂钩,不要再次运行$post\u id=wp\u insert\u post($post);,改为进行更新,并在调用函数时发布您通过的\u id。我希望这个答案能帮助我解决一个问题,我有两个事件字段——“事件开始日期”和“事件结束日期”;如果没有输入结束日期,我使用
acf/save_post
操作创建了一个函数,将开始日期复制到结束日期字段中。使用带有字段标签的get\u field
不起作用,也就是说,我需要两次更新帖子以实际保存值,但是使用上面详述的$\u post['acf']['field\u KEY']
确实起作用。