Os update_post_metaganchos são chamados a partir da update_metadata()função mais genérica , portanto você pode não encontrá-lo diretamente. Os três ganchos são:
update_post_metadata, um filtro que permite "seqüestrar" a atualização de metadados e fazer outra coisa. Se você conectar uma função que retorne um booleano, a execução será interrompida e o booleano será retornado.
update_post_meta, uma ação que é chamada antes que os dados sejam atualizados no banco de dados.
updated_post_meta, uma ação que é chamada depois que os dados são atualizados no banco de dados.
Se a tecla meta não existe na base de dados, no entanto, update_metadata()passa o controlo para add_metadata(), que tem os ganchos semelhantes add_post_metadata, add_post_metae added_post_meta. Isso acontece antes de update[d]_post_metaser chamado. Então, se você quer fazer algo quando a tecla meta é adicionado ou atualizado, certifique-se de ligar para ambos os update*e os add*ganchos - de notar que, enquanto o updated_*e added_*acções passar parâmetros semelhantes, update_*e add_*não ( add_post_metanão passa um ID meta em primeiro lugar) .
delete_metadata()tem ganchos semelhantes: delete_post_metadata, delete_post_metae deleted_post_meta.
Código de amostra:
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_metausoupdate_metadatae lá, havia ganchos paraadded_post_metae,updated_post_metamas isso é tanto quanto eu poderia conseguir. Não entendi como usar. Mas agora eu acho que eu tenho que :)