Khi một bài viết được cập nhật, có một số hook được kích hoạt:
'pre_post_update'
là một hành động được kích hoạt ngay trước khi bài đăng được cập nhật, đối số được truyền là 2: $post_ID
và $data
đó là một mảng của tất cả các colums cơ sở dữ liệu khác của bảng bài
'transition_post_status'
là một hook được kích hoạt khi cập nhật và vượt qua 3 đối số: $ new_post_status $old_post_status
và $post
(object).
- Sau đó, có 2 hook chuyển tiếp khác được kích hoạt, nhưng chúng được đặt tên động, điều đó có nghĩa là hành động hiệu quả được kích hoạt phụ thuộc vào trạng thái bài cũ và mới.
"{$old_status}_to_{$new_status}"
và "{$new_status}_{$post->post_type}"
. Đầu tiên chỉ truyền đối tượng post làm đối số, thứ hai truyền id bài và đối tượng post. Tìm tài liệu ở đây .
'edit_post'
vượt qua 2 đối số: $post_ID
và $post
(đối tượng)
'post_updated'
vượt qua 3 đối số : $post_ID
, $post_after
(đối tượng đăng sau khi cập nhật), $post_before
(đối tượng đăng trước khi cập nhật)
- Một hook động khác:
"save_post_{$post->post_type}"
phụ thuộc vào loại bài đăng, ví dụ: đối với các bài đăng tiêu chuẩn là 'save_post_post'
và đối với các trang là 'save_post_page'
, hook này vượt qua 3 đối số : $post_ID
, $post
(đối tượng) và $update
đó là một boolean (đúng hoặc sai) đúng khi bạn thực hiện cập nhật, trong thực tế cái móc này cũng bị bắn khi bài đăng được lưu lần đầu tiên.
- '
save_post
' được kích hoạt cả khi cập nhật và lưu lần đầu tiên và vượt qua 3 đối số tương tự của hook trước đó.
- '
save_post_{$post_type}
' được kích hoạt cả khi cập nhật và lưu lần đầu tiên và vượt qua 2 đối số đầu tiên của hook trước đó.
- Cuối cùng, bạn có '
wp_insert_post
' , được kích hoạt cả khi cập nhật và lưu lần đầu tiên và vượt qua 3 đối số tương tự của 2 hook trước đó.
Các hook này được kích hoạt mỗi khi một bài đăng được cập nhật, cả thông qua các trang quản trị trong phần phụ trợ và thông qua khi được cập nhật "thủ công" bằng cách sử dụng wp_update_post
hoặc các wp_insert_post
chức năng.
Khi bài đăng được cập nhật bằng các trang quản trị, có thêm các hook được kích hoạt, một ví dụ là 'update_post_redirect'
hoặc 'post_updated_messages'
. (Xem này và này WPSE câu trả lời cho các ví dụ sử dụng).
Lưu ý rằng nếu bạn muốn sử dụng một số đối số hook, đó không phải là đối số đầu tiên, bạn phải khai báo rõ ràng trong add_action
cuộc gọi.
Ví dụ: nếu bạn muốn sử dụng '$update'
đối số (đó là lần thứ 3) của 'save_post'
hook bạn cần thêm 3
dưới dạng $accepted_args
param trên add_action
( xem tài liệu ):
// if you don't add 3 as as 4th argument, this will not work as expected
add_action( 'save_post', 'my_save_post_function', 10, 3 );
function my_save_post_function( $post_ID, $post, $update ) {
$msg = 'Is this un update? ';
$msg .= $update ? 'Yes.' : 'No.';
wp_die( $msg );
}
Lưu ý cuối cùng về thời gian : bạn phải chắc chắn rằng nó add_action
được gọi trước khi hành động được kích hoạt, hoặc nó sẽ không làm gì cả.
Ví dụ mã này:
wp_update_post( $post );
add_action( 'save_post', 'my_function', 10, 3 );
sẽ không làm gì cả, vì hành động được thêm vào sau khi hook được bắn. Ở đây thật đơn giản để nhận ra nó, trong thế giới thực, mã không phải lúc nào cũng như vậy.
save_post
, đó là một lỗi đánh máy ở đây, hay đó là trong mã gốc của bạn? Ngoài ra, cho phép gỡ lỗi trong khi phát triển.