Defina o título do tipo de postagem personalizado para a data do post

Eu tenho um tipo de postagem personalizado, chamado ‘status’ e desabilitei o ‘título’ no tipo de publicação. Agora, está configurando todas as postagens para ter o título “Auto Draft”. Eu quero configurar uma maneira de definir o título para ser a data da publicação. Eu acho que deveria estar usando “wp_insert_post_data”. Agora estou usando o código a seguir, mas não está funcionando:

function status_title_filter( $data , $postarr ) { if ($postarr['post_type'] == 'status'){ $date = $data['post_date']; $data['post_title'] = $date; } return $data; } add_filter( 'wp_insert_post_data' , 'status_title_filter' , '99' ); 

Agradecemos antecipadamente por resolver meu simples problema. Eu sou uma espécie de novato quando se trata desse tipo de coisas.

Solutions Collecting From Web of "Defina o título do tipo de postagem personalizado para a data do post"

Apesar do que o Codex diz, $ postarr nem sempre é passado, então você deve usar apenas $ dados. $ data não é um nome de variável significativo, no entanto, então eu prefiro $ cleanPost. Eu também tentaria remover a prioridade no filtro, já que geralmente não é necessário. Também é uma boa idéia configurar a slug ( post_name ) além do título e evitar a execução do código em auto-rascunhos e trash / untrash operações. Veja se isso funciona em vez disso:

 function status_title_filter( $cleanPost ) { if( $cleanPost['post_type'] == 'status' && $cleanPost['post_status'] != 'auto-draft' && $_GET['action'] != 'trash' && $_GET['action'] != 'untrash' ) $cleanPost['post_title'] = $cleanPost['post_name'] = $cleanPost['post_date']; return $cleanPost; } add_filter( 'wp_insert_post_data', 'status_title_filter' ); 

Atualização : acho que a razão pela qual você não vê $ postarr é porque, por padrão, as devoluções de ação apenas aceitam um parâmetro. Se você quiser mais, você precisa especificar isso no gancho, como add_action( 'wp_insert_post_data', 'my_callback_function', 10, 2) . Isso determinaria a prioridade para 10 e o número de argumentos para 2.

Há um plugin que faz isso – datetitle . Talvez você possa ver o código lá e ter uma idéia de como fazê-lo.

Eu sei que é um atraso, mas você pode definir o título para o postdate antes de criar a postagem.

 $postarr['title'] = current_time('mysql'); $postarr['post_type'] = 'myposttype'; wp_insert_post($postarr); 

HTH