Các update_post_metahook được gọi từ update_metadata()hàm chung hơn , vì vậy bạn có thể không tìm thấy nó trực tiếp. Ba móc là:
update_post_metadata, một bộ lọc cho phép bạn "đánh cắp" bản cập nhật siêu dữ liệu và làm một cái gì đó khác. Nếu bạn kết nối một hàm trả về boolean, việc thực thi dừng ở đó và boolean được trả về.
update_post_meta, một hành động được gọi trước khi dữ liệu được cập nhật trong cơ sở dữ liệu.
updated_post_meta, một hành động được gọi sau khi dữ liệu được cập nhật trong cơ sở dữ liệu.
Nếu khóa meta không tồn tại trong cơ sở dữ liệu nào, update_metadata()chuyển điều khiển đến add_metadata(), trong đó có các móc tương tự add_post_metadata, add_post_metavà added_post_meta. Điều này xảy ra trước khi update[d]_post_metađược gọi. Vì vậy, nếu bạn muốn làm gì đó khi khóa meta được thêm hoặc cập nhật, hãy nhớ móc vào cả móc update*và add*móc - nhưng lưu ý rằng trong khi updated_*và added_*hành động vượt qua các tham số tương tự, update_*và add_*không ( add_post_metakhông vượt qua meta ID trước) .
delete_metadata()có móc tương tự: delete_post_metadata, delete_post_metavà deleted_post_meta.
Mã mẫu:
add_action( 'added_post_meta', 'wpse16835_after_post_meta', 10, 4 );
add_action( 'updated_post_meta', 'wpse16835_after_post_meta', 10, 4 );
function wpse16835_after_post_meta( $meta_id, $post_id, $meta_key, $meta_value )
{
if ( 'wpse16835_meta_key' == $meta_key ) {
wpse16835_do_something( $post_id, $meta_value );
}
}
add_action( 'deleted_post_meta', 'wpse16835_deleted_post_meta', 10, 4 );
function wpse16835_deleted_post_meta( $deleted_meta_ids, $post_id, $meta_key, $only_delete_these_meta_values )
{
if ( 'wpse16835_meta_key' == $meta_key ) {
wpse16835_undo_something( $post_id );
}
}
update_post_metasử dụngupdate_metadatavà trong đó, có những cái móc đếnadded_post_metavà đóupdated_post_metalà những gì tôi có thể nhận được. Tôi không hiểu cách sử dụng. Nhưng bây giờ tôi nghĩ rằng tôi đã có nó :)