web-dev-qa-db-fra.com

Suppression des "réponses de commentaires" attachées lors de la suppression d'un commentaire

Lors de l'envoi d'un commentaire à la corbeille, les "commentaires de réponses" attachés ne sont ni supprimés ni supprimés.

Comment pouvez-vous configurer wordpress pour que, lorsque vous supprimez un commentaire, ses réponses soient automatiquement supprimées?

1
dkl

Vous pouvez créer une action pour delete_comment, en parcourant les commentaires et en les supprimant.

J'utilise deux fonctions différentes ici, une qui supprime les commentaires des enfants (connecté à trash_comment) et l'autre qui les supprime directement.

Veuillez vous assurer de la fonction que vous utilisez ou si vous voulez utiliser les deux. La version sûre consisterait à déplacer les commentaires des enfants dans la corbeille et non à les supprimer - dans ce cas, vous devez raccorder f711_trash_child_comments à delete_comment.

S'il vous plaît être conscient que cette fonction est entièrement récursive. Les actions sont appelées avant le commentaire est effectivement supprimé. Ainsi, dans une chronologie, les commentaires imbriqués sont supprimés en premier, à partir du bas.

add_action( 'delete_comment', 'f711_delete_child_comments' ); // complete deletion
add_action( 'trash_comment', 'f711_trash_child_comments' ); // move to trash


function f711_delete_child_comments( $comment_id ) {

    global $wpdb;
    $children = $wpdb->get_col( $wpdb->prepare("SELECT comment_ID FROM $wpdb->comments WHERE comment_parent = %d", $comment_id) ); //select the comments where the parentcomment is the comment to be deleted

    if ( !empty($children) ) {
        foreach( $children as $thischild => $childid ) {

            wp_delete_comment( $childid, true ); // set second parameter to false if you just want to move it to the trash

        }

    }

}

function f711_trash_child_comments( $comment_id ) {

    global $wpdb;
    $children = $wpdb->get_col( $wpdb->prepare("SELECT comment_ID FROM $wpdb->comments WHERE comment_parent = %d", $comment_id) ); //select the comments where the parentcomment is the comment to be deleted

    if ( !empty($children) ) {
        foreach( $children as $thischild => $childid ) {

            wp_trash_comment( $childid ); // set second parameter to false if you just want to move it to the trash

        }

    }

}
1
fischi