Los update_post_meta
ganchos se llaman desde la update_metadata()
función más genérica , por lo que es posible que no lo haya encontrado directamente. Los tres ganchos son:
update_post_metadata
, un filtro que le permite "secuestrar" la actualización de metadatos y hacer otra cosa. Si conecta una función que devuelve un valor booleano, la ejecución se detiene allí y se devuelve el valor booleano.
update_post_meta
, una acción que se llama antes de que los datos se actualicen en la base de datos.
updated_post_meta
, una acción que se llama después de que los datos se actualizan en la base de datos.
Si la tecla meta no existía en la base de datos, sin embargo, update_metadata()
pasa el control add_metadata()
, que tiene los ganchos similares add_post_metadata
, add_post_meta
y added_post_meta
. Esto sucede antes de que lo update[d]_post_meta
llamen. Por lo tanto, si desea hacer algo cuando se agrega o actualiza la meta clave , asegúrese de engancharse en update*
los add*
ganchos y en los ganchos, pero tenga en cuenta que mientras las acciones updated_*
y added_*
pasan parámetros similares, update_*
y add_*
no lo add_post_meta
hace ( no pasa primero una meta ID) .
delete_metadata()
tiene ganchos similares: delete_post_metadata
, delete_post_meta
y deleted_post_meta
.
Código de muestra:
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
usoupdate_metadata
y allí había ganchosadded_post_meta
yupdated_post_meta
eso era lo más lejos que podía llegar. No entendí cómo usarlo. Pero ahora creo que lo tengo :)