Trả lại $ post_id khi DOING_AUTOSAVE?


8

Tôi thấy mô hình sau nhiều lần, trên trang web này và trên những nơi khác:

add_action( 'save_post', 'wpse14169_save_post' );
function wpse14169_save_post( $post_id )
{
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return $post_id;
    }
    // Other code...
}

Tại sao tôi nên trở về $post_id? save_postlà một hành động và giá trị trả về của một trình xử lý hành động bị bỏ qua . Bản thân lõi WordPress cũng không làm điều đó .

Ví dụ Codex không trả về dòng$post_id , nhưng nó sẽ không phải là dòng không chính xác (hoặc lỗi thời) đầu tiên trong Codex.

Tui bỏ lỡ điều gì vậy? Tôi có cần quay lại $post_idkhông? Đã có một thời gian khi điều này là cần thiết?


Để tham khảo ở đây là chỉnh sửa giới thiệu phiên bản đầu này của Codex . Tôi không nhận ra thông tin đăng nhập, bạn có thể thử tìm người và hỏi (nếu điều đó quan tâm).
Rarst

Câu trả lời:


5

Các 'save_post'hành động được thêm vào cốt lõi trong 2,0 , và luôn luôn là một hành động. Nhìn qua các quy trình tự động hiện tại, dường như không gọi 'save_post'hành động trực tiếp bất cứ lúc nào.

Vì vậy, câu trả lời ngắn gọn là không. Không có lý do, và chưa bao giờ là bất kỳ lý do nào, để trả lại bất kỳ giá trị nào cho hành động này. Tất nhiên, việc trả lại id bài đăng sẽ không gây hại gì.


7

Vì không có gì được thực hiện với giá trị trả về, nên việc trả lại ID bài đăng là vô nghĩa và không nên thực hiện. Nó chỉ cung cấp chỗ cho sự nhầm lẫn.

Chỉ cần thử nó ra, save_posthành động sau đây hoạt động tốt.

function my_save_post($post_id)
{
    // Stop WP from clearing custom fields on autosave
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
        return;

    // Prevent quick edit from clearing custom fields
    if (defined('DOING_AJAX') && DOING_AJAX)
        return;

    // Sanitize, validate and save ...

}
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.