Daniel Marx — SEO Consulting – Ihr Experte in Wien

Google Analytics Opt-Out Link in WordPress

Um Google Analytics datenschutzkonform und rechtssicher nutzen zu können, muss man als Websitebetreiber dem User eine Möglichkeit geben, sich aus der Datenerfassung heraus zu optieren. Das ist technisch grundsätzlich auch kein Problem – ärgerlich ist aber, dass in WordPress den Link zum Deaktivieren von Google Analytics entfernt, so dass das Opt-Out nicht mehr funktioniert. Doch das Problem kann man elegant lösen.

Google Analytics Opt-Out überhaupt ermöglichen

Der Verweis auf das Browser Add On, das Google  unter https://tools.google.com/dlpage/gaoptout?hl=de selbst bereitstellt reicht da nach Meinung vieler Juristen nicht, da man dieses Add On auf mobilen Systemen nicht installieren kann. Zum Glück gibt es aber in Google Analytics die Möglichkeit, die es ermöglicht ein individuelles Opt-Out Cookie zu setzen, mit dem der User der Erfassung auf unserer Domain widersprechen kann.

Wer seinen Google Analytics Code „per Hand“ in den Head seiner Website eingebunden hat, der stellt einfach den folgenden Code VOR den Google Analytics Tracking Code:

<!-- Opt-Out for Google Analytics -->
<script>
var gaProperty = 'UA-XXXXXXXX-X';

var disableStr = 'ga-disable-' + gaProperty; if (document.cookie.indexOf(disableStr + '=true') > -1) { window[disableStr] = true; }

function gaOptout() { document.cookie = disableStr + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/'; window[disableStr] = true; alert('Google Analytics ist deaktiviert');} 
</script>

Dabei muss man natürlich UA-XXXXXXXXX-X mit der Zahlenkombination der eigenen Google Analytics Property ersetzen. Ist das geschafft, kann man dem User einen Opt-Out Link anbieten, der unsere neue Funktion ausführt und damit ein Cookie im Browser des Users setzt. Dazu einfach javascript:gaOptout() verlinken:

<a href="javascript:gaOptout()">Mein GA OptOut Link</a>

Das Problem:

Nutzt man den visuellen Editor oder auch den neuen Guttenberg Editor entfernt WordPress aber das javascript:gaOptout()aus dem href-Attribut. Sieht man sich den Quell-Code auf der Seite an, findet sich nur noch <a>Google Analytics deaktivieren</a>

Auch wenn man versucht die gaOptout() Funktion mit einem onClick Event zu callen, schmeißt der WordPress Editor den Eventhandler raus. Aus
<a href="#" onClick="gaOptout()">Mein GA OptOut Link</a> wird
<a href="#">Mein GA OptOut Link</a>

Grund dafür ist einfach eine Sicherheitsfunktionalität von WordPress, die verhindern soll, dass Inline JavaScript-Code ausgespielt wird.

Die Lösungen

Teilweise funktioniert es, wenn man statt dem visuellen Editor den Text-Editor nutzt. Jedenfalls für’s Erste. Wenn man dies Seite aber das nächste Mal wieder im Visuellen Editor nutzt, löscht WordPress das JavaScript wieder aus dem href-Attribut unseres Link.

Shortcode nutzen

Eine elegante Möglichkeit ist sicherlich den Link ganz einfach über einen Shortcode einzubauen.  Dazu registrieren wir einfach einen neuen eigenen Shortcode, indem wir in der functions.php des (Child-)Themes folgendes ergänzen:

function ga_cookie_optout() {
 	
  return '<a href=" javascript:gaOptout()">Google Analytics  deaktivieren</a>';
}

add_shortcode('ga_cookie_optout', 'ga_cookie_optout');

Jetzt kann man einfach den Shortcode [[ga_cookie_optout]] an der gewünschten Stelle einbauen.

Leider kommt es aber auch vor, dass selbst das Inline-JavaScript, das über den Shortcode ins Template geladen wird, ebenfalls von WordPress entfernt wird. Teilweise wird da nur das javascript: entfernt, sodass sich im Quelltext dann ein relativer Link auf eine 404-Fehlerseite findet:

<a href="gaOptout()">Mein GA OptOut Link</a>

jQuery nutzen

Mit jQuery können wir die Opt-Out Funktion sozusagen „indirekt“ aufrufen, indem wir ein kleines Script laden, dass einfach nur horcht, ob jemand einen Link mit einer bestimmten ID klickt. Und ein IDs können wir in WordPress vergeben, ohne dass uns der Editor Informationen aus dem a Tag löscht. Also z.B.

<span id="OptOutWrapper"><a id="deactivateGoogleAnalytics">Google Analytics deaktivieren</a></span>

Damit unsere jQuery Funktion auch ausgeführt werden kann, muss die jQuery Libary bereits geladen sein. WordPress selbst hat bereits eine jQuery-Version integriert, die in der Regel im Footer geladen wird. Daher packen wir unsere Funktion am besten auch in den Footer direkt ins footer.php des (Child-)Themes am besten vor den schließenden </body> Tag:

<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#OptOutWrapper").on("click", "a#deactivateGoogleAnalytics", gaOptout);
});
</script>