Por que há uma ação save_post e wp_insert_post?

7

Acabei de perceber que em wp-includes/post.php ( source ), no final de wp_insert_post() , ambas as ações save_post e wp_insert_post são chamadas uma após a outra, com os mesmos parâmetros:

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

Nada acontece entre eles, então parece não haver diferença entre usar um ou outro.

A mesma redundância é repetida um pouco mais abaixo em wp_publish_post() ( source ), e a versão controlada mais antiga do arquivo também tem as mesmas duas ações (obrigado toscho por apontar essas ações).

Estou faltando alguma coisa? Por que ambos estão lá, e se eu estou escolhendo uma ação para usar, há uma razão para escolher um sobre o outro?

    
por Tim Malone 26.06.2016 / 23:08

1 resposta

6

wp_insert_post foi introduzido no changeset 2887 , e foi para corrigir bug # 1681 . Não encontrei a proveniência original do save_post hook, mas foi adicionado mais recentemente ao núcleo no changeset 3291 , relacionado a bilhete # 2063 . Evidentemente, ele existia em 1.5.2 (embora o controle de versão não suporta esta teoria ) e precisava ser adicionado de volta para o back-compat.

Então aparentemente , save_post foi adicionado em 1.5.0, depois removido de alguma forma no ciclo de vida de desenvolvimento 2.0, então wp_insert_post foi adicionado posteriormente no desenvolvimento 2.0 ciclo de vida e finalmente , save_post foi adicionado novamente mais tarde no ciclo de vida 2.0 para não quebrar o back-compat.

E, em vez de ser o gancho obsoleto que você esperaria que esse gancho fosse, se isso fosse verdade, ele se tornaria o gancho padrão de fato que os desenvolvedores usam.

    
por John P Bloch 27.06.2016 / 01:38