web-dev-qa-db-fra.com

Puis-je déclencher le hook publish_post en utilisant wp_insert_post?

J'écris un plugin qui récupère des données d'un fichier XML, puis crée une publication basée sur son contenu.

Je pensais utiliser wp_insert_post() pour publier le nouveau message, mais certaines fonctions sont reliées à publish_post.

Après avoir creusé dans le \wp-includes\post.php, je n’ai trouvé aucun hook d’action publish_post déclenché par cet événement.

Il n'y avait que ces crochets liés à mon cas:

// Fires once an existing post has been updated.
do_action( 'post_updated', $post_ID, $post_after, $post_before);
// Fires once a post has been saved.
do_action( 'save_post', $post_ID, $post, $update );
//Fires once a post has been saved.
do_action( 'wp_insert_post', $post_ID, $post, $update );

Est-ce que je manque quelque chose? Ou wp_insert_post() ne déclenche-t-il pas l'action publish_post?

2
Jack Johansson

Il est déclenché dans wp_publish_post() qui appelle:

wp_transition_post_status( 'publish', $old_status, $post );

qui déclenche des appels d'action, dynamiquement avec:

do_action( "{$new_status}_{$post->post_type}", $post->ID, $post );

"{$new_status}_{$post->post_type}" devient "publish_post" dans votre cas.

3
birgire