Tại sao có cả hành động save_post và wp_insert_post?


7

Tôi chỉ nhận ra rằng trong wp-includes/post.php( nguồn ), ở cuối wp_insert_post(), cả hai hành động save_postwp_insert_posthành động được gọi lần lượt, với các tham số chính xác giống nhau:

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

Không có gì xảy ra giữa chúng, vì vậy dường như không có sự khác biệt giữa việc sử dụng cái này hay cái khác.

Sự dư thừa tương tự được lặp lại một chút trong wp_publish_post()( nguồn ) và phiên bản cũ nhất của tệp cũng có hai hành động tương tự (cảm ơn toscho vì đã chỉ ra những điều này).

Tui bỏ lỡ điều gì vậy? Tại sao cả hai đều ở đó, và nếu tôi đang chọn một hành động để sử dụng, có lý do để chọn một hành động khác không?


Kỳ dị. Dường như không thể tìm thấy bất cứ điều gì trên trac hoặc trong repo. Các phiên bản được theo dõi lâu đời nhất của tập tin đó đã có những hành động này rồi.
fuxia

Phải là một vấn đề có ý nghĩa, bạn đã kiểm tra số lượng xuất hiện? Ý tôi là chỉ có một nơi cho cả hai trong các tập tin cốt lõi?
JMau

Có lẽ wp_insert_postđã được thêm vào sau đó như là một cách để làm cho tên hook trong các chức năng có thể đoán được?
GaryJ

@JMau Cả hai hành động chỉ được gọi ở một nơi khác : wp_publish_post(). Và ở đó, sự dư thừa tương tự tồn tại.
fuxia

@toscho Tôi đã thêm cả bình luận của bạn vào bài viết.
Tim Malone

Câu trả lời:


6

wp_insert_post đã được giới thiệu trong tập thay đổi 2887 và đã sửa lỗi # 1681 . Tôi không thể tìm thấy save_postnguồn gốc ban đầu của hook, nhưng gần đây nhất nó đã được thêm vào cốt lõi trong thay đổi 3291 , liên quan đến vé # 2063 . Rõ ràng là nó đã tồn tại trong 1.5.2 (mặc dù kiểm soát phiên bản không hỗ trợ lý thuyết này ) và cần được thêm lại cho back-compat.

Vì vậy, rõ ràng , save_postđã được thêm vào 1.5.0, sau đó bằng cách nào đó đã bị xóa trong vòng đời phát triển 2.0, sau đó wp_insert_post được thêm vào trong vòng đời phát triển 2.0 và cuối cùng , save_postđã được thêm lại ngay cả trong vòng đời 2.0 để không bị phá vỡ ngược.

Và thay vì là cái móc không được chấp nhận, bạn mong đợi một cái móc như vậy nếu đó là sự thật, nó đã trở thành cái móc mặc định thực tế mà các nhà phát triển sử dụng.


1
Tìm thấy tuyệt vời, cảm ơn John! Tôi đoán chúng ta có thể tóm tắt: một cái móc đã vô tình bị gỡ bỏ; không nhận ra rằng, một cái móc mới đã được thêm vào nơi thiếu một cái; hook trước đó sau đó đã được thêm lại cho back-compat. Bởi vì các móc chỉ được sử dụng ở một nơi khác và cũng được sử dụng cùng nhau ở đó, không có sự khác biệt giữa chúng và bây giờ có rất ít cơ hội sẽ bị xóa, nên chúng tôi không chọn vấn đề nào.
Tim Malone
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.