web-dev-qa-db-fra.com

Wordpress Supprimer le hook avec la fonction wp_delete_post?

J'ai cette action/crochet:

add_action( 'before_delete_post', 'my_delete_function' );
 function my_delete_function($post_id) { 
    global $wpdb;
    $achievement = get_the_category($post_id); 
    $h = $achievement[0]->cat_ID; 
    $s = ''.str_replace('"', '', $h);
   if ( $s == 6 || $s == 5){
        $wpdb->query("DELETE FROM wp_votes WHERE post = ".$post_id) or die(mysql_error());

    }
}

Ce qui précède fonctionne très bien lorsque je supprime des messages de l’administrateur. Cependant, lorsque la fonction wp_delete_post () est appelée, l'action ne fonctionne pas.

Comment puis-je faire fonctionner l'action avec la fonction de suppression?

1
shammer

wp_delete_post() toujours déclenche before_delete_post - le problème doit être que vous accrochez votre fonction de manière conditionnelle (c'est-à-dire pas tout le temps).

before_delete_post seulement est déclenché si vous supprimez la publication de façon permanente, pas seulement sa suppression.

Si vous devez également écouter la corbeille, utilisez wp_trash_post.

2
TheDeadMedic

Utilisation wp_delete_post:

wp_delete_post($postid, $force_delete = false)

Le crochet 'before_delete_post' n'est appelé que lorsque post est supprimé de force. Et pas quand c'est juste envoyé à la poubelle. Par défaut juste

wp_delete_post($postid)

envoie le message à la corbeille. Parce que l'indicateur $ force_delete par défaut est false. Donc, vous devez forcer la suppression en définissant le drapeau sur true:

wp_delete_post( $postid, true);
1
Abir Pathak