web-dev-qa-db-fra.com

Pourquoi existe-t-il une action save_post et wp_insert_post?

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?

7
Tim Malone

wp_insert_posta é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.

6
John P Bloch