| Britta Kröhl

DSGVO, WP & reCAPTCHA

Über das Thema DSGVO ansich wurde anderswo genug geschrieben – ich gehöre zu den Menschen, die lieber auf Nummer sicher gehen, also musste reCAPTCHA weichen.
Ersatz für mein Kontaktformular? Contact Form 7 Image Captcha sah doch ganz gut aus – fein lokal gehostet, keine Verbindung zu externen Servern – dachte ich.

Dachte ich, bis es fertig eingerichtet war, funktionierte, und dann die Nachkontrolle folgte. Da stand es dann: maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css – Font Awesome für die hübschen kleinen Bildchen wird ungeniert von extern geladen, also genau das, was ich vermeiden wollte. Zudem ist das bei mir ohnehin schon eingebunden, da brauche ich das nicht ein zweites Mal.

Kurz in das Script geschaut:

add_action('init', 'cf7ic_register_style');
function cf7ic_register_style() {
    wp_enqueue_style( 'font-awesome', '//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css' );
    wp_register_style( 'cf7ic_style', plugins_url('/style.css', __FILE__), false, '1.1.0', 'all');
}

Das einfachste wäre nun natürlich, diese Zeile zu entfernen, aber es soll ja updatesicher bleiben. Bleibt nur: wp_dequeue_style.
Voraussetzung ist natürlich ein Childtheme inklusive functions.php, aber das sollte ohnehin jeder so eingerichtet haben, der sich in diese Richtung bewegt.

Den Namen haben wir, also tun es schon diese kurzen Zeilen in der functions.php um das externe Laden zu verhindern:

function remove_extern() {
   wp_dequeue_style('font-awesome');
}
add_action( 'wp_enqueue_scripts', 'remove_extern', 11 );

Nun gibt es allerdings zwei mögliche Probleme, die man direkt daran erkennt, dass die Bilder nicht mehr dargestellt werden:
a) die Website ansich bindet Font Awesome nicht ein – es fehlt komplett.
b) die Website ansich bindet Font Awesome zwar ein, aber dummerweise mit dem gleichen Bezeichner, womit es nun auch wieder komplett fehlt.
In beiden Fällen muss es wieder hinzugefügt werden.

Für a) folgendermaßen vorgehen:
1. http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css aufrufen, das CSS lokal speichern
2. Das lokal gespeicherte CSS per FTP in den Ordner des Childthemes verschieben
3. obige Zeilen folgendermaßen editieren:

function remove_extern() {
   wp_dequeue_style('font-awesome');
   wp_enqueue_style('font-awesome_local', get_stylesheet_directory_uri().'/font-awesome.min.css');
}
add_action( 'wp_enqueue_scripts', 'remove_extern', 11 );

Für b) muss zuerst die vorhandene CSS-Datei lokalisiert werden – nehmen wir einmal an, der Pfad sieht folgendermaßen aus:
wp-content/themes/parent-theme/css/font-awesome.min.css
– dann muss die Funktion folgendermaßen editiert werden:

function remove_extern() {
   wp_dequeue_style('font-awesome');
   wp_enqueue_style('font-awesome_local', get_template_directory_uri().'/css/font-awesome.min.css');
}
add_action( 'wp_enqueue_scripts', 'remove_extern', 11 );

Damit ist das externe Laden letztlich verhindert, aber die Funktionalität sichergestellt. Pfad und Dateiname müssen natürlich jeweils an die Gegebenheiten angepasst werden.