Les update_post_meta
hooks sont appelés à partir de la update_metadata()
fonction plus générique , donc vous ne l'avez peut-être pas trouvé directement. Les trois crochets sont:
update_post_metadata
, un filtre qui vous permet de "détourner" la mise à jour des métadonnées et de faire autre chose. Si vous connectez une fonction qui renvoie un booléen, l'exécution s'arrête là et le booléen est renvoyé.
update_post_meta
, une action qui est appelée avant la mise à jour des données dans la base de données.
updated_post_meta
, une action qui est appelée après la mise à jour des données dans la base de données.
Si la clé de méta n'existait pas dans la base de données encore, update_metadata()
passe le contrôle add_metadata()
, ce qui a des crochets similaires add_post_metadata
, add_post_meta
et added_post_meta
. Cela se produit avant d' update[d]_post_meta
être appelé. Donc , si vous voulez faire quelque chose lorsque la clé de méta est ajouté ou mis à jour, assurez - vous de brancher dans les deux update*
et les add*
crochets - mais avis que si les updated_*
et added_*
actions passent des paramètres similaires, update_*
et add_*
ne le font pas ( add_post_meta
ne passe pas un ID méta premier) .
delete_metadata()
comporte des crochets similaires delete_post_metadata
, delete_post_meta
et deleted_post_meta
.
Exemple de code:
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
utilisationupdate_metadata
et là-dedans, il y avait des crochetsadded_post_meta
etupdated_post_meta
mais c'est aussi loin que je pouvais obtenir. Je n'ai pas compris comment l'utiliser. Mais maintenant je pense que j'ai compris :)updated_{$post_type}_meta
La réponse de Jan couvre à peu près tout ce qui précède, sauf dans le cas où une métadonnée personnalisée est supprimée de la page Modifier le message. Cela se produit de manière asynchrone dès que vous cliquez sur le bouton "Supprimer" sous les métadonnées, via un appel à wp-admin / admin-ajax.php. Malheureusement, ces appels contournent la
delete_metadata()
fonction dans meta.php et les appelsdelete_meta()
dans wp-admin / includes / post.php à la place (à ne pas confondre avec wp-includes / post.php).Il y a cependant 2 actions qui peuvent encore être utilisées
delete_postmeta
(avant la suppression) etdeleted_postmeta
(après la suppression). Les deux acceptent un seul paramètre$mid
, qui est l'ID des métadonnées ( pas la clé). Vous pouvez récupérer l'objet de métadonnées en utilisant:qui renvoie un objet avec meta_id, post_id, meta_key abd meta_value. Bien sûr, au moment de l'
deleted_postmeta
appel, les métadonnées ont été supprimées, doncget_post_meta_by_id()
cela ne fonctionnera pas (ce qui rend cette action inutile)Il en va de même pour la mise à jour d'une métadonnée personnalisée à partir de la page Modifier la publication. La
update_metadata()
fonction (et ses actions) dans meta.php n'est pas appelée, mais laupdate_meta()
fonction dans wp-admin / includes / post.php l'est à la place. Encore deux actions ici,update_postmeta
etupdated_postmeta
. Les arguments sont $ meta_id, $ post_id, $ meta_key, $ meta_value.la source