web-dev-qa-db-de.com

Wordpress Hook mit wp_delete_post Funktion löschen?

Ich habe diese Aktion/Haken:

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());

    }
}

Das oben Genannte funktioniert hervorragend, wenn ich Posts vom Administrator lösche. Wenn jedoch wp_delete_post () aufgerufen wird, funktioniert die Aktion nicht.

Wie kann ich die Aktion mit der Löschfunktion ausführen?

1
shammer

wp_delete_post() always löst before_delete_post aus - das Problem muss sein, dass Sie Ihre Funktion bedingt einbinden (d. h. nicht immer).

before_delete_post wird nur ausgelöst, wenn Sie den Beitrag tatsächlich dauerhaft löschen und nicht nur in den Papierkorb werfen.

Wenn Sie auch auf den Papierkorb achten müssen, verwenden Sie wp_trash_post.

2
TheDeadMedic

Verwendung wp_delete_post:

wp_delete_post($postid, $force_delete = false)

Der Haken 'before_delete_post' wird nur aufgerufen, wenn das Löschen des Beitrags erzwungen wird. Und nicht, wenn es nur in den Müll geschickt wird. Standardmäßig nur

wp_delete_post($postid)

schickt die Post in den Papierkorb. Weil das standardmäßige $ force_delete-Flag falsch ist. Sie müssen das Löschen erzwingen, indem Sie das Flag auf true setzen:

wp_delete_post( $postid, true);
1
Abir Pathak