Te update_post_meta
haki są wywoływane z bardziej ogólny update_metadata()
funkcji, więc nie mógł znaleźć go bezpośrednio. Trzy haki to:
update_post_metadata
, filtr, który pozwala „przejąć” aktualizację metadanych i zrobić coś innego. Jeśli podłączysz funkcję, która zwraca wartość logiczną, wykonanie zatrzymuje się na niej i zwracana jest wartość logiczna.
update_post_meta
, akcja wywoływana przed zaktualizowaniem danych w bazie danych.
updated_post_meta
, akcja wywoływana po aktualizacji danych w bazie danych.
Jeśli klucz meta nie istnieje w bazie danych jeszcze, update_metadata()
przechodzi kontrolę add_metadata()
, która ma podobne haki add_post_metadata
, add_post_meta
i added_post_meta
. Dzieje się tak, zanim update[d]_post_meta
zostanie wywołany. Jeśli więc chcesz coś zrobić, gdy dodawany lub aktualizowany jest klucz meta , pamiętaj, aby podłączyć zarówno haki, jak update*
i add*
haki - ale zauważ, że podczas gdy akcje updated_*
i added_*
przekazują podobne parametry, update_*
a add_*
nie ( add_post_meta
najpierw nie przekazuje meta ID) .
delete_metadata()
ma podobne haki: delete_post_metadata
, delete_post_meta
i deleted_post_meta
.
Przykładowy kod:
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
użyciuupdate_metadata
i tam nie było haczykówadded_post_meta
iupdated_post_meta
ale to tak daleko, jak mogę dostać. Nie zrozumiałem, jak używać. Ale teraz myślę, że mam :)