Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在前端使用ACF提交新邮件时出现问题_Php_Wordpress - Fatal编程技术网

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']
确实起作用。