Um der seit dem 25.5.2018 aktiven EU-Datenschutzgrundverordnung kurz DSGVO gerecht zu werden, sollte man überall da, wo man personenbezogene Daten erfasst, einen entsprechenden Hinweis mit Einwilligung anbringen.

So auch im Fall der WordPress Kommentar Funktion. In den folgenden Absätzen möchte ich zeigen, wie einfach man ohne WP Plugin eine entsprechende Checkbox (als Pflichtfeld) mit Datenschutz-Hinweis im WP Kommentar Formular hinzufügt. Ja, das geht noch einfacher mit einem der vielen GDPR (Englisch für DSGVO) Plugins. Wenn man aber nur diese Funktion braucht, ist der Einsatz solcher Plugins etwas überladen. Letztendlich müssen die folgenden Code-Schnipsel einfach nur in die functions.php eures Themes (besser Child-Theme) kopiert werden.

Das Standard Formular um das Input Feld erweitern

Als erstes müssen wir natürlich das Input Feld dem Standard Kommentar Formular hinzufügen. Wir erstellen also eine Funktion, hier mit dem Namen webshaped_comment_form_privacy_input. In dieser legen wir ein neues Input Feld sowie ein passendes Label an. Den Text des Labels kannst du einfach selbst editieren; dafür einfach den folgenden Textabschnitt (Zeile 11) suchen "HIER KANNST DU DEN TEXT EDITIEREN".

Update: Sascha hat mich darauf aufmerksam gemacht, dass die Standard-Felder Author, Email und URL fehlen wenn die Funktion nur mit dem Datenschutz Input-Feld genutzt wird. Ich habe entsprechende Felder ergänzt. Jetzt sollte es wie erwartet funktionieren.

Update: Jason hat mich darauf aufmerksam gemacht, dass ich das zusätzliche Feld mit einem simplen Array Element hinzufügen kann. So bleiben alle Standard Felder erhalten. Der Betrag wurde entsprechend angepasst.

// Fügt die Funktion dem Standard WP Kommentar Formular hinzu
add_filter( 'comment_form_default_fields', 'webshaped_comment_form_privacy_input' );
// Die Funktion erstellt die Checkbox für das Standard WP Kommentar Formular
function webshaped_comment_form_privacy_input( $fields ) {
	$req      = get_option( 'require_name_email' );
	$aria_req = ( $req ? " aria-required='true'" : '' );

	// Elemente dem Kommentar Formular hinzufügen
	$fields['datenschutz'] =
	'<div class="comment-form-datenschutz"><input id="datenschutz" class="my-class" name="datenschutz" type="checkbox"' . $aria_req . ' />' .
	'<label class="my-class" for="datenschutz">' . __( 'HIER KANNST DU DEN TEXT EDITIEREN > Mit der Nutzung dieses Formulars erklären Sie sich mit der Speicherung und Verarbeitung Ihrer Daten durch diese Website einverstanden. Weitere Informationen erfahren Sie in der <a href="/datenschutz">Datenschutzerklärung.</a>' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label></div>';

	return $fields;
}

Prüfen ob das Input Feld leer ist

Im nächsten Schritt prüfen wir, bevor das Formular abgeschickt wird, ob die Checkbox aktiviert wurde. Ist die Checkbox nicht betätigt worden, zeigt WordPress mit wp_die eine Fehler-Seite mit entsprechenden Text an. Diesen kannst du in Zeile sieben hinter wp_die anpassen.

Update: Es war nicht möglich als angemeldeter Nutzer das Formular abzuschicken. Ich habe die if Bedingung entsprechend angepasst.

add_filter( 'preprocess_comment', 'webshaped_verify_comment_meta_data' );
function webshaped_verify_comment_meta_data( $commentdata ) {
	// Wenn die Checkbox leer ist und ein Gastnutzer schreiben möchte...
	if ( empty( $_POST['datenschutz'] ) and ! current_user_can( 'read' ) ) {
		// ... zeige folgenden Fehlertext an
		wp_die( __( '<strong>FEHLER</strong>: Die Datenschutzbox wurde nicht akzeptiert.<br><br><a href="javascript:history.back()">« Zurück</a>' ) );
	}
	return $commentdata;
}

Beide Code Schnipsel in eure functions.php eures Themes (besser Child-Theme) kopieren. Geschafft!

Wer sich wie Jasmin an der nicht gerade hübschen Validierung von WordPress Kommentaren stört. Findet hier mein Tutorial zum Thema WordPress Comment Form Validierung mit JavaScript.