Je n'ai besoin de suspendre une fonction que lorsque je supprime définitivement une publication de la base de données. J'ai essayé le hook 'before_delete_post'. Cependant, elle est appelée à la fois lorsqu'elle est supprimée et définitivement supprimée.
La fonction wp_delete_post () appelle wp_trash_post () et doit cesser le traitement, mais il semble que la fonction wp_delete_post () soit appelée à nouveau après la suppression de la publication.
J'ai vu cette question: Wordpress Supprimer le hook avec la fonction wp_delete_post? . Mon besoin est exactement le contraire.
Le problème était le plug-in "Sitewide tags", qui se comportait mal le flux naturel WP. Une fonction appelée sitewide_tags_post_delete()
est accrochée à 'trash_post' et appelle wp_delete_post()
pour supprimer la publication sur le blog principal.
En suivant l'approche de @ Stephen, j'ai fait ceci:
add_action('before_delete_post', 'my_deleted_post');
function my_deleted_post($post_id){
global $blog_id;
if($blog_id == <main_blog_id>){ // usually is 1
return false;
}
//do whatever you need :)
};
before_delete_post
n'est pas appelé lorsqu'un message est uniquement mis à la corbeille.
Alors que wp_delete_post()
peut supprimer des publications (si la publication n'est pas supprimée et qu'elle n'est pas supprimée de force), il le fait en appelant wp_trash_post()
et en quittant la fonction avant le déclenchement de l'action before_delete_post
.
J'ai testé cela, la fonction suivante ne "mourra" que lorsque vous supprimerez définitivement une publication, mais pas lorsqu'elle sera confinée à la corbeille. Le wp_die
doit montrer quand l'appel est passé - je ne recommande pas de l'utiliser sur un site actif.
add_action('before_delete_post', 'my_deleted_post');
function my_deleted_post($post_id){
wp_die(var_dump($post_id));
};
La fonction wp_delete_post()
peut être trouvée ici (WP 3.3.1)