Definir um título em um tipo de postagem personalizado que não suporta títulos

Eu tenho um CPT chamado “perfil” que só suporta o editor e a miniatura. Cada usuário está limitado a publicar apenas 1 perfil.

Estou procurando uma maneira de preencher os campos de título e slug com o nome de exibição do autor do post. Como é agora, se eu clicar em Publicar, o post_status no db é “Auto Draft” e o URL se torna “localhost / mytestsite / profile / auto-draft-1”. Parece WP precisa de um título ou então não será considerado “Publicado”.

Eu verifiquei várias perguntas já postadas aqui e esta parece ser a única que eu preciso. Tipo de postagem personalizado com título personalizado

Mas desde que eu quero o nome do autor e não valores em uma taxonomia ou campo personalizado, não sei como modificar o código para refletir isso.

Eu vejo que get_the_author () precisa estar no The Loop.

Solutions Collecting From Web of "Definir um título em um tipo de postagem personalizado que não suporta títulos"

Você pode adicionar uma input oculta na página para pré-configurar o campo do título, porque não estará na página (porque o tipo não suporta títulos).

Slug é produzido a partir do título, então você só precisa adicionar um valor de título.

Algo assim deve funcionar (embora não testado).

add_action( 'submitpost_box', 'hidden_type_title' ); function hidden_type_title() { global $current_user, $post, $post_type; // If the current type supports the title, nothing to done, return if( post_type_supports( $post_type, 'title' ) ) return; ?>  < ?php } 

Embora eu sugira talvez adicionar mais ao código e verificar se o nome do autor não está vazio, etc ... deve ser suficiente para trabalhar com ... (ou começar pelo menos) ... 🙂

Eu tentei a resposta aceita, mas só funcionou a segunda vez que fiz uma alteração na postagem e salvei. Meu código funciona pela primeira vez. Também estou usando um campo personalizado para replace o título.

 add_action( 'submitpost_box', 'set_post_type_title_manaully' ); function set_post_type_title_manaully() { global $post, $post_type; // If the current type supports the title, nothing to done, return if( post_type_supports( $post_type, 'title' ) ) return; $title = esc_attr(htmlspecialchars(get_field('advanced_custom_field'))); // $title = esc_attr(htmlspecialchars(get_post_meta($post->ID,'custom_field',true))); wp_update_post( array( 'ID'=>$post->ID, 'post_title'=>$title ) );