Bedingt Kommentare beim Ignorieren von Antworten

Ich benutze ein WordPress-Theme, das Benutzerpunkte vergibt (die in Benutzer-Metadaten gespeichert werden), um Kommentare zu veröffentlichen. Sie erhalten jedoch keine Punkte für die Beantwortung eines Kommentars.

Wenn ich einen Kommentar in den Papierkorb verschiebe, wird ein Punkt vom Autor des Kommentars über den folgenden Code abgezogen:

// Remove 1 point if their comment is removed function deleteAPointFromUser( $comment_id ) { $comment = get_comment( $comment_id ); $authorid = $comment->user_id; $currentPointNumber = get_user_meta( $authorid, 'points', true ); // Decrement comment author's "points" by 1 update_user_meta( $authorid, 'points', $currentPointNumber - 1 ); } add_action( 'trash_comment', 'deleteAPointFromUser' ); 

Das Problem ist, dass wenn ich Antworten auf einen Kommentar lösche, ein Punkt vom Autor der Antwort abgezogen wird (obwohl dieser Autor nie einen Punkt für die Antwort erhalten hat).

Ich möchte Kommentarantworten entfernen, ohne einen Punkt von den Autoren zu entfernen.

Solutions Collecting From Web of "Bedingt Kommentare beim Ignorieren von Antworten"

Überprüfen Sie einfach, ob der Kommentar ein Elternteil hat, bevor Sie Punkte dekrementieren. Wenn Sie den Codex-Eintrag für die function get_comment() , stellen Sie fest, dass Sie auf die Art und Weise, wie Sie die function verwenden, ein Objekt zurückgeben, das Schlüssel enthält, die den wp_comments Tabelle wp_comments . wp_comments Sie beim Anzeigen der wp_comments sshamma , dass es eine Spalte namens comment_parent , die die Post-ID des übergeordneten comment_parent des Kommentars enthält, oder standardmäßig 0 wenn der Kommentar kein übergeordnetes comment_parent hat. Daher können Sie den gewünschten Effekt über Folgendes erreichen:

 function deleteAPointFromUser( $comment_id ) { $comment = get_comment( $comment_id ); // Only decrement user 'points' if the comment being deleted has no parent comment. if( $comment->comment_parent == 0 ) { $authorid = $comment->user_id; $currentPointNumber = get_user_meta( $authorid, 'points', true ); update_user_meta( $authorid, 'points', $currentPointNumber - 1 ); } } add_action( 'trash_comment', 'deleteAPointFromUser' );