Better WP Comments

Nachfolgendes Plugin, dass ich hier im Blog einsetze biete ich auf diesem Weg zum Abkupfern an. Das Plugin fügt bei Bedarf ein Notizfeld am Anfang des Kommentarformulars und eine Checkbox zu Zustimmung der Datenspeicherung am Ende des Formulars hinzu. Außerdem löscht es die IP-Adresse, den User-Agent und die Gravatare aus den Kommentaren.

<?php
/*
Plugin Name:    Better WP Comments V2
Description:    Stellt einen Datenschutzhinweis und eine Checkbox zur Zustimmung im Kommentarformular zur Verfügung. Verhindert das Speichern der IP-Adresse und User-Agents. Schaltet die Gravatare auf der Webseite ab.
Plugin URI:     https://horstscheuer.net/better-wp-comments/
Version:        2019.08.15
Author:         Horst Scheuer
Author URI:     https://horstscheuer.net
License:        GPL2
License URI:    https://www.gnu.org/licenses/gpl-2.0.html

Better WP Comments is free software: you can redistribute it and/or modify it 
under the terms of the GNU General Public License as published by the Free 
Software Foundation, either version 2 of the License, or any later version.
 
Better WP Comments is distributed in the hope that it will be useful, but 
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License along with 
Better WP Comments. If not, see https://www.gnu.org/licenses/gpl-2.0.html.
 */

if ( ! defined( 'WPINC' ) ) {
  die;
}

/* Einstellungen ---------------------------------------------------------------*/
$bwc_notice         = '1';
$bwc_notice_text    = 'Diese Funktion speichert ihre Daten. Mehr dazu in der Datenschutzerklärung.';

$bwc_checkbox       = '1';
$bwc_checkbox_text  = 'Ich bin mit der Speicherung und Verarbeitung meiner Daten einverstanden.';
$bwc_checkbox_error = 'Du musst mit dem Speichern deiner Daten durch abhaken der Checkbox einverstanden sein.';

/* Kommentar-Notiz -------------------------------------------------------------*/
if ($bwc_notice === '1') { 
  function afn_custom_comment_form($fields) {
  global $bwc_notice_text;
  
    $fields['comment_notes_before'] = '<p class="bwc-notice">' . $bwc_notice_text . '</p>';
    return $fields;
  }
  add_filter( 'comment_form_defaults', 'afn_custom_comment_form' );
}

/* Kommentar-Checkbox ----------------------------------------------------------*/
if ($bwc_checkbox === '1') {
  function my_comment_form_field_comment( $comment_field ) {
  global $bwc_checkbox_text;
  
    if ( is_admin() || is_user_logged_in() ) {
      return $comment_field;
    }
   
    return $comment_field.'<p class="bwc-privacy"><input type="checkbox" name="privacy" value="privacy-key" class="privacyBox" aria-req="true"> <span>' .  $bwc_checkbox_text . '</span><p>';
  }
  add_filter( 'comment_form_field_comment', 'my_comment_form_field_comment' );
  
  function verify_comment_privacy( $commentdata ) {
    global $bwc_checkbox_error;
  
    if ( is_admin() || is_user_logged_in()  ) {
      return $commentdata;
    } 
  
    if ( ! isset( $_POST['privacy'] ) )
      wp_die( '<p><strong>' . __('Fehler', 'better-wp-comments') . ':</strong> ' . $bwc_checkbox_error . '</p><p><a href="javascript:history.back()">« ' . __('Zurück', 'better-wp-comments') . '</a></p>' );
    
    return $commentdata;
  }
  add_filter( 'preprocess_comment', 'verify_comment_privacy' );
  
  function save_comment_privacy( $comment_id ) {
    add_comment_meta( $comment_id, 'privacy', $_POST[ 'privacy' ] );
  }
  add_action( 'comment_post', 'save_comment_privacy' );
}

/* Kommentar-IP und User-Agent -------------------------------------------------*/
function remove_comment_author_ip( $comment_author_ip ) { 
  return '';
}
add_filter( 'pre_comment_user_ip', 'remove_comment_author_ip', 50 );

function remove_comment_agent_string( $comment_agent ) { 
  return ''; 
} 
add_filter( 'pre_comment_user_agent', 'remove_comment_agent_string', 50 );  

/* Gravatare ------------------------------------------------------------------*/
function disable_comment_avatar($avatar, $id_or_email, $size, $default, $alt) {
  return "<img alt='{$alt}' src='/wp-content/plugins/better-wp-comments/includes/avatar.jpg' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
}
add_filter("get_avatar" , "disable_comment_avatar" , 1, 5);
?>

Bitte beachtet! Die Zeilen nach „Einstellungen“ müssen angepasst werden. Mit Hilfe der Variablen $bwc_checkbox und $bwc_checkbox kann die Notiz am Anfang und die Checkbox am Ende des Formulars deaktiviert werden.

Zur besseren Darstellung des Textes wurden die CSS-Klassen bwc-notice und bwc-privacy eingebaut.

Wichtig: Ich habe dieses Snippets, hier in diesem Blog, getestet. Bei mir läuft es fehlerfrei. Ihr solltet, falls ihr meinen Code nutzt, trotzdem vorsichtig sein. Ich empfehle eine Sicherung der Datei, die ihr ändert und auch der gesamten Installation, bevor ihr den Code-Schnipsel bei euch einbaut.