The update_post_meta
kait disebut dari lebih generik update_metadata()
fungsi, sehingga Anda tidak mungkin telah menemukan secara langsung. Tiga kait itu adalah:
update_post_metadata
, filter yang memungkinkan Anda untuk "membajak" pembaruan metadata dan melakukan sesuatu yang lain. Jika Anda menghubungkan fungsi yang mengembalikan boolean, eksekusi berhenti di sana dan boolean dikembalikan.
update_post_meta
, suatu tindakan yang dipanggil sebelum data diperbarui dalam database.
updated_post_meta
, suatu tindakan yang dipanggil setelah data diperbarui dalam database.
Jika kunci meta tidak ada dalam database belum, update_metadata()
melewati kontrol ke add_metadata()
, yang memiliki kait yang sama add_post_metadata
, add_post_meta
, dan added_post_meta
. Ini terjadi sebelum update[d]_post_meta
dipanggil. Jadi jika Anda ingin melakukan sesuatu ketika kunci meta ditambahkan atau diperbarui, pastikan untuk menghubungkan ke kait update*
dan add*
kait - tetapi perhatikan bahwa sementara updated_*
dan added_*
tindakan melewati parameter yang sama, update_*
dan add_*
jangan ( add_post_meta
tidak melewati meta ID terlebih dahulu) .
delete_metadata()
memiliki kait yang sama: delete_post_metadata
, delete_post_meta
dan deleted_post_meta
.
Kode sampel:
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
menggunakanupdate_metadata
dan di sana, ada kait untukadded_post_meta
danupdated_post_meta
tapi itu sejauh yang saya bisa dapatkan. Saya tidak mengerti bagaimana cara menggunakannya. Tapi sekarang saya pikir saya sudah mendapatkannya :)updated_{$post_type}_meta
Jawaban Jan mencakup cukup banyak di atas kecuali untuk kasus di mana metadata khusus dihapus dari halaman Edit Post. Ini terjadi secara tidak sinkron segera setelah Anda mengklik tombol "Hapus" di bawah metadata, melalui panggilan ke wp-admin / admin-ajax.php. Sayangnya, panggilan itu memintas
delete_metadata()
fungsi di meta.php dan panggilandelete_meta()
di wp-admin / include / post.php sebagai gantinya (jangan dikacaukan dengan wp-include / post.php).Ada 2 tindakan yang masih bisa digunakan,
delete_postmeta
(sebelum penghapusan), dandeleted_postmeta
(setelah penghapusan). Keduanya menerima parameter tunggal$mid
, yang merupakan ID dari metadata ( bukan kunci). Anda dapat mengambil objek metadata menggunakan:yang mengembalikan objek dengan meta_id, post_id, meta_key abd meta_value. Tentu saja, pada saat
deleted_postmeta
itu disebut metadata telah dihapus sehinggaget_post_meta_by_id()
tidak akan berfungsi (yang membuat tindakan itu tidak berguna)Hal yang sama berlaku untuk memperbarui metadata khusus dari halaman Edit Posting. The
update_metadata()
function (dan tindakannya) di meta.php yang tidak disebut, tetapiupdate_meta()
fungsi dalam wp-admin / includes / post.php adalah bukan. Dua tindakan lagi di sini,update_postmeta
danupdated_postmeta
. Args adalah $ meta_id, $ post_id, $ meta_key, $ meta_value.sumber