J'ai un type de message personnalisé sans champ Titre. Ce sont des messages d'état brefs, où seul le contenu compte. Le flux RSS et le lien permanent affichent le titre en tant que brouillon automatique, ce qui n’est pas très utile. Idéalement, il aurait le contenu du message, ou au moins les 10 premiers mots environ.
J'ai essayé cette fonction, mais elle apparaît toujours en tant que brouillon automatique:
add_filter('title_save_pre', 'save_title');
function save_title($my_post_title) {
if ($_POST['post_type'] == 'servicestatus') :
$new_title = wp_trim_words( $_POST['content'], $num_words = 10, $more = null )
$my_post_title = $new_title;
endif;
return $my_post_title;
}
add_filter('name_save_pre', 'save_name');
function save_name($my_post_name) {
if ($_POST['post_type'] == 'servicestatus') :
$new_name = wp_trim_words( $_POST['content'], $num_words = 10, $more = null )
$my_post_name = $new_name;
endif;
return $my_post_name;
}
Je pense que save_post
action hook est le bon. Peut-être voudrez-vous insérer une vérification si le titre de l'article est déjà défini ($post_object->post_title
), car ce code met toujours à jour le titre en fonction du contenu.
add_action( 'save_post', 'save_post_wpse_87921', 10, 2 );
function save_post_wpse_87921( $post_id, $post_object )
{
// Auto save?
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
return;
// Correct post_type
if ( 'servicestatus' != $post_object->post_type )
return;
$new_title = wp_trim_words( $post_object->post_content, $num_words = 10, $more = '' );
// Unhook this function so it doesn't loop infinitely
remove_action( 'save_post', 'save_post_wpse_87921' );
// Call wp_update_post update, which calls save_post again.
wp_update_post( array(
'ID' => $post_id,
'post_title' => $new_title
));
add_action( 'save_post', 'save_post_wpse_87921', 10, 2 );
}