J'ai une fonction qui traite les données de métabox personnalisées lors de la sauvegarde de mon type de message personnalisé:
add_action('save_post_customtypehere','myown_save_customtype_fn');
function myown_save_customtype_fn($ID) { ... }
Cependant, la fonction est également exécutée lorsque je supprime des éléments au sein de ce CPT (je suppose que cela enregistre effectivement le message pour remplacer post_status
par trash
). Sans la metabox présente, ma fonction finit par effacer des choses comme post_name
(pas génial si j'ai besoin de restaurer depuis la corbeille!).
J'ai deux idées en tête, mais je n'arrive pas à franchir la ligne d'arrivée avec eux:
1) Afin de mettre à jour les données de publication, j'utilise à nouveau remove_action()
et add_action()
autour de wp_update_post(array('post_key'=>$sanitized_form_input))
- conformément aux instructions du codex, ceci est nécessaire pour éviter une boucle infinie. Existe-t-il un moyen similaire d'exclure d'une action trash_post (j'ai déjà essayé remove_action('trash_post','myown_save_customtype_fn'
immédiatement après la ligne add_action
d'origine).
2) Y a-t-il quelque chose que je peux utiliser dans une condition au sein de myown_save_customtype_fn
(à l'instar de if (current action!='trash_post') { ...
)
save_post
est renvoyé une fois la publication enregistrée. Nous obtenons l'objet post actuel comme second paramètre. Nous pouvons donc vérifier si le statut actuel de la publication est corbeille:
<?php
add_action( 'save_post', function( $post_ID, $post, $update ) {
if ( 'trash' === $post->post_status ) {
return;
}
/** do your stuff **/
}, 10, 3 );
?>