Je viens de me rendre compte que dans wp-includes/post.php
( source ), à la fin de wp_insert_post()
, les actions save_post
et wp_insert_post
sont appelées l'une après l'autre, avec exactement les mêmes paramètres:
3520 /**
3521 * Fires once a post has been saved.
3522 *
3523 * @since 1.5.0
3524 *
3525 * @param int $post_ID Post ID.
3526 * @param WP_Post $post Post object.
3527 * @param bool $update Whether this is an existing post being updated or not.
3528 */
3529 do_action( 'save_post', $post_ID, $post, $update );
3530
3531 /**
3532 * Fires once a post has been saved.
3533 *
3534 * @since 2.0.0
3535 *
3536 * @param int $post_ID Post ID.
3537 * @param WP_Post $post Post object.
3538 * @param bool $update Whether this is an existing post being updated or not.
3539 */
3540 do_action( 'wp_insert_post', $post_ID, $post, $update );
Rien ne se passe entre eux, il semble donc n'y avoir aucune différence entre utiliser l'un ou l'autre.
La même redondance est répétée un peu plus loin dans wp_publish_post()
( source ), et la version la plus suivie du fichier comporte également les deux mêmes actions (merci toscho pour les signaler).
Est-ce que je manque quelque chose? Pourquoi sont-ils tous les deux présents, et si je choisis une action à utiliser, y a-t-il une raison de choisir l'une plutôt que l'autre?
wp_insert_post
a été introduit dans le changeset 2887 et devait corriger bug n ° 1681 . Je ne pouvais pas trouver la provenance d'origine du crochet save_post
, mais il a été ajouté récemment à core dans changeset 3291 , en relation avec ticket n ° 2063 . Évidemment, il existait dans la version 1.5.2 (bien que le contrôle de version ne supporte pas cette théorie ) et devait être rajouté pour le back-compat.
Donc apparemment , save_post
a été ajouté à la version 1.5.0, puis supprimé d'une manière ou d'une autre dans le cycle de développement 2.0, then wp_insert_post
a ensuite été ajouté au cycle de développement 2.0, et enfin , save_post
a été ajouté back même plus tard dans le cycle de vie 2.0 afin de ne pas renverser la compatibilité.
Et plutôt que d'être le point d'ancrage déconseillé, vous vous attendriez à ce qu'il en soit ainsi, c'est devenu le point d'ancrage de facto default que les développeurs utilisent.