【问题标题】:issue in new post submission with ACF on front end在前端使用 ACF 提交新帖子时出现问题
【发布时间】:2019-01-23 12:25:45
【问题描述】:

我将高级自定义字段用于自定义帖子类型,以允许用户从前端添加帖子。我的更新代码工作正常。插入新帖子无法正常工作。它只是添加一个帖子,但没有保存任何数据。

我已经尝试了以下代码。

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);

我无法弄清楚我哪里出错了。我希望在提交帖子时提交所有数据,并且在更新时必须更新所有数据。

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    有趣的是,我昨天解决了这个问题。 当您挂接“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();
    

    【讨论】:

    • 现在,它正在保存两条记录。我只需要更改 $value 吗?还是别的什么?你能更新我的代码吗?我想从前端添加一个新帖子并更新现有帖子。
    • 整个函数挂在帖子创建/更新上,不要第二次运行 $post_id = wp_insert_post( $post );,改为更新,并且 post_id 在调用函数时通过低谷。我希望这会有所帮助
    • 无论如何,这个答案帮助我解决了一个问题,我有两个字段用于事件 - “event_start_date”和“event_end_date”;如果没有输入结束日期,我使用acf/save_post 操作创建了一个函数,将开始日期复制到结束日期字段中。使用带有字段标签的 get_field 不起作用——也就是说,我需要更新帖子两次才能实际保存值——但使用上面详述的 $_POST['acf']['FIELD_KEY'] 确实有效。
    猜你喜欢
    • 2014-01-29
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多