update_post_metaตะขอจะเรียกว่าจากทั่วไปมากขึ้นupdate_metadata()ฟังก์ชั่นเพื่อให้คุณอาจจะไม่ได้พบว่ามันโดยตรง ตะขอสามอัน ได้แก่ :
update_post_metadataตัวกรองที่อนุญาตให้คุณ "จี้" อัปเดตข้อมูลเมตาและทำอย่างอื่น หากคุณเชื่อมต่อฟังก์ชั่นที่ส่งกลับบูลีนการดำเนินการจะหยุดลงที่นั่นและบูลีนจะถูกส่งคืน
update_post_metaแอ็คชันที่ถูกเรียกก่อนที่ข้อมูลจะถูกอัพเดตในฐานข้อมูล
updated_post_metaการกระทำที่ได้รับการเรียกหลังจากที่มีการอัพเดทข้อมูลในฐานข้อมูล
ถ้าคีย์เมตาไม่ได้อยู่ในฐานข้อมูลยังupdate_metadata()ผ่านการควบคุมadd_metadata()ซึ่งมีตะขอที่คล้ายกันadd_post_metadata, และadd_post_meta added_post_metaสิ่งนี้เกิดขึ้นก่อนที่จะupdate[d]_post_metaถูกเรียก ดังนั้นหากคุณต้องการทำอะไรบางอย่างเมื่อคีย์ meta ถูกเพิ่มหรืออัปเดตให้แน่ใจว่าได้ใส่ทั้งในupdate*และและadd*hooks - แต่โปรดสังเกตว่าในขณะที่updated_*และadded_*การกระทำผ่านพารามิเตอร์ที่คล้ายกันupdate_*และadd_*ไม่ ( add_post_metaไม่ผ่านเมตา ID ก่อน) .
delete_metadata()มีตะขอที่คล้ายกัน: delete_post_metadata, และdelete_post_metadeleted_post_meta
รหัสตัวอย่าง:
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_metaใช้update_metadataและในนั้นมีตะขอadded_post_metaและupdated_post_metaแต่นั่นเท่าที่ฉันจะได้รับ ฉันไม่เข้าใจวิธีใช้ แต่ตอนนี้ผมคิดว่าผมได้รับมัน :)