如何将自定义帖子类型字段设置为帖子标题以避免自动草稿'

时间:2016-08-09 17:35:49

标签: php wordpress advanced-custom-fields custom-fields

我使用高级自定义字段插件和自定义帖子类型用户界面为我的用户提供了一些额外的功能。我遇到的问题是我已经设置了用户信息菜单,在列表视图中,所有新帖子都显示为自动草稿。反正我是否可以将字段slug公司名称作为列表视图的帖子标题?

我尝试了下面的代码,但它没有将公司名称更新为帖子标题,在自定义帖子页面中显示消息,如"您正在编辑显示最新帖子的页面。&# 34;

我的示例代码:

add_filter('title_save_pre', 'save_title');
function save_title() {
        if ($_POST['post_type'] == 'users') : // my custom post type name
          $new_title = $_POST['company_name']; // my custom field name
          $my_post_title = $new_title;
        endif;
        return $my_post_title;
}

3 个答案:

答案 0 :(得分:1)

使用name =" post_title"在您的输入

<input type="text" name="post_title" id="meta-text" class="form-control" value="">

答案 1 :(得分:0)

这应该有效:

add_action( 'acf/save_post', 'save_post_handler' , 20 );
function save_post_handler( $post_id ) {
    if ( get_post_type( $post_id ) == 'users' ) {
        $title              = get_field( 'company_name', $post_id ); 
        $data['post_title'] = $title;
        $data['post_name']  = sanitize_title( $title );
        wp_update_post( $data );
    }
}

答案 2 :(得分:0)

免责声明:我昨天只是从上到下阅读了php网站,但我读了一些关于尝试这样做的帖子并组装了这个适合我的解决方案。我有一个名为艺术家的自定义帖子类型,我将first_name和last_name的艺术家acf字段组合在一起并将其设置为标题。对于您的示例,您可以删除添加姓氏的部分。

// Auto-populate artist post type title with ACF first name last name.
function nd_update_postdata( $value, $post_id, $field ) {
// If this isn't an 'artists' post type, don't update it.
if ( get_post_type( $post_id ) == 'artists' ) {   
    $first_name = get_field('first_name', $post_id);
    $last_name = get_field('last_name', $post_id);
    $title = $first_name . ' ' . $last_name;
    $slug = sanitize_title( $title );
    $postdata = array(
         'ID'      => $post_id,
         'post_title'  => $title,
         'post_type'   => 'artists',
         'post_name'   => $slug
    );
wp_update_post( $postdata, true );
return $value;
}
}
add_filter('acf/update_value/name=first_name', 'nd_update_postdata', 
10, 3);
add_filter('acf/update_value/name=last_name', 'nd_update_postdata', 10, 
3);