web-dev-qa-db-fra.com

Comment intercepter un titre sur un post-enregistrement

Je suis nouveau sur WP et je ne pouvais pas trouver cette solution par moi-même.

c'est ma fonction,

 function explodetitletotags () {
 
 global $ post; 
 
 $ title = $ post-> post_title; 
 
 $ tags = explode ('', preg_replace ('/ [^\p {L} 0-9] /', '', $ title)); 
 
 pour chaque balise $ en tant que $ tag {
 
 global $ post; 
 
 $ thePostID = $ post-> ID; 
 
 wp_add_post_tags ($ thePostID, $ tag); 
 
} 
 
} 
 
 add_action ('publish_post', 'explodetitletotags'); 
 

La fonction fonctionne comme un charme sauf . Lorsque le titre de l'article dans la nouvelle page de l'article unique est mis à jour , le titre donne toujours la valeur précédente et non la dernière. fois j'ai tapé dans la boîte de titre de saisie.

Mon hypothèse est que, dans ma fonction, $title = $post->post_title; appelle l'ancienne version du titre de Database au lieu de la nouvelle version, pourquoi ne pas simplement saisir le titre avant de l'envoyer à la base de données afin que le titre soit toujours à la dernière version, est-ce d'accord?

Si oui, existe-t-il un moyen d'intercepter/intercepter WordPress après l'enregistrement, avant qu'il ne soit enregistré dans la table wp_posts de la base de données?

Je suis désolé pour mon anglais, car ce n'est pas ma première langue et merci pour votre aide.

2
ded syd

Pour définir le titre avant de l’enregistrer, connectez-vous à wp_insert_post_data:

add_filter( 'wp_insert_post_data', 'wpse_75597_change_title' );

function wpse_75597_change_title( $post_data )
{
    $post_data['post_title'] = 'SOMETHING VERY LOUD';

    return $post_data;
}
2
fuxia