Warum gibt es sowohl eine save_post- als auch eine wp_insert_post-Aktion?

7

Ich habe gerade festgestellt, dass in wp-includes/post.php( Quelle ) am Ende wp_insert_post()sowohl die save_postals auch die wp_insert_postAktionen nacheinander mit genau denselben Parametern aufgerufen werden:

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 );

Es passiert nichts zwischen ihnen, daher scheint es keinen Unterschied zwischen der einen oder der anderen zu geben.

Die gleiche Redundanz wird etwas weiter unten in wp_publish_post()( Quelle ) wiederholt , und die älteste verfolgte Version der Datei hat auch die gleichen zwei Aktionen (danke an scho für diesen Hinweis).

Vermisse ich etwas Warum sind beide da und wenn ich eine Aktion auswähle, gibt es einen Grund, eine über die andere zu wählen?

Tim Malone
quelle
Seltsam. Es scheint unmöglich zu sein, irgendetwas auf dem Trac oder im Repo zu finden. Die älteste verfolgte Version dieser Datei hatte diese Aktionen bereits.
Fuxia
Muss eine Frage der Bedeutung sein, haben Sie die Anzahl der Vorkommen überprüft? Ich meine, gibt es nur einen Platz für beide in den Kerndateien?
JMau
Vielleicht wp_insert_postwurde später hinzugefügt, um Hook-Namen innerhalb von Funktionen erraten zu können?
GaryJ
@JMau Beide Aktionen werden nur an einer anderen Stelle aufgerufen : wp_publish_post(). Und dort besteht die gleiche Redundanz.
Fuxia
@toscho Ich habe beide Kommentare zum Beitrag hinzugefügt.
Tim Malone

Antworten:

6

wp_insert_post wurde in Changeset 2887 eingeführt und sollte den Fehler # 1681 beheben . Ich konnte save_postdie ursprüngliche Herkunft des Hakens nicht finden , aber sie wurde zuletzt im Änderungssatz 3291 zum Kern hinzugefügt , der sich auf Ticket Nr. 2063 bezieht . Offensichtlich existierte es in 1.5.2 (obwohl die Versionskontrolle diese Theorie nicht unterstützt ) und musste zur Rückkompatibilität wieder hinzugefügt werden.

So offenbar , save_postwurde in 1.5.0 hinzugefügt, dann irgendwie entfernt in dem 2.0 - Entwicklungszyklus, dann wp_insert_post später wurde in dem 2.0 - Entwicklungszyklus hinzugefügt, und schließlich , save_postwurde hinzugefügt zurück noch später in dem 2,0 - Lebenszyklus , um nicht zu brechen zurück-compat.

Und anstatt der veraltete Hook zu sein, den man von einem solchen Hook erwarten würde, wenn dies zutrifft, wurde er de facto zum Standard-Hook, den Entwickler verwenden.

John P Bloch
quelle
1
Tolle Fundstücke, danke John! Ich denke, wir können zusammenfassen: Ein Haken wurde versehentlich entfernt; ohne es zu merken, wurde ein neuer Haken hinzugefügt, wo einer fehlte; Der vorherige Hook wurde dann zur Rückkompatibilität erneut hinzugefügt. Da die Haken nur an einer anderen Stelle verwendet werden und auch dort zusammen verwendet werden, ohne dass ein Unterschied zwischen ihnen besteht und die Wahrscheinlichkeit gering ist, dass sie jetzt entfernt werden, spielt es einfach keine Rolle, welche wir wählen.
Tim Malone