Skip to content

Instantly share code, notes, and snippets.

@mbaersch
Last active March 30, 2017 10:03
Show Gist options
  • Save mbaersch/7185d9151715d6801f64d09c9e3fb901 to your computer and use it in GitHub Desktop.
Save mbaersch/7185d9151715d6801f64d09c9e3fb901 to your computer and use it in GitHub Desktop.
Wordpress Plugin-Code zur Ausgabe eines Opt-Out-Markers für Google Analytics
<?php
/*
Plugin Name: gms GA Opt-Out-Marker (Demo)
Plugin URI: https://www.gandke.de/ga-marker
Description: Ausgabe eines Markers f&uuml;r internen Traffic zum Ausschluss aus Google Analytics. Weitere Infos siehe Blog
Author: Markus Baersch, gandke marketing &amp; software
Author URI: https://www.gandke.de
Version: 0.2
*/
$gmoptoutmarker = new gms_ga_optout_marker() ;
add_action('wp_head', array($gmoptoutmarker, 'hook_gms_ga_optout'));
add_action('admin_menu', array($gmoptoutmarker, 'hook_gms_ga_optout_menu')) ;
class gms_ga_optout_marker {
function hook_gms_ga_optout() {
$exc_IpPattern = stripslashes(get_option('gms_ga_optout_marker_pattern')) ;
$exc_Header = stripslashes(get_option('gms_ga_optout_marker_headername')) ;
$exc_HeaderMarker = stripslashes(get_option('gms_ga_optout_marker_headervalue')) ;
$markerTxt = stripslashes(get_option('gms_ga_optout_marker_echotext')) ;
//Ausgeben, wenn Bedingung zutrifft
if ((($exc_IpPattern != "") && (preg_match("/$exc_IpPattern/i", $_SERVER['REMOTE_ADDR']))) ||
(($exc_Header != "") && ($_SERVER[$exc_Header] === $exc_HeaderMarker))) echo $markerTxt;
}
function hook_gms_ga_optout_menu() {
if (function_exists('add_options_page')) {
add_options_page('options-general.php', 'GA OutOut-Marker', 8, basename(__FILE__), array($this, 'gms_ga_optout_marker_options')) ;
}
return false ;
}
/*Administrationsmenu ausgeben und Optionen verwalten*/
function gms_ga_optout_marker_options() {
add_option('gms_ga_optout_marker_pattern', '^127\.0\.0\.1$') ;
add_option('gms_ga_optout_marker_headername', 'HTTP_GA_TRAFFIC_TYPE') ;
add_option('gms_ga_optout_marker_headervalue', 'Intern') ;
add_option('gms_ga_optout_marker_echotext', '<script>var gaDim1Value=\'intern\';</script>') ;
if (isset($_POST['gms_save']) && ('speichern' == $_POST['gms_save']))
{
update_option('gms_ga_optout_marker_pattern', $_POST['gms_ga_om_pattern']) ;
update_option('gms_ga_optout_marker_headername', $_POST['gms_ga_om_headername']) ;
update_option('gms_ga_optout_marker_headervalue', $_POST['gms_ga_om_headervalue']) ;
update_option('gms_ga_optout_marker_echotext', $_POST['gms_ga_om_echotext']) ;
}
$s_pattern = stripslashes(get_option('gms_ga_optout_marker_pattern')) ;
$s_hdname = stripslashes(get_option('gms_ga_optout_marker_headername')) ;
$s_hdval = stripslashes(get_option('gms_ga_optout_marker_headervalue')) ;
$s_echotext = stripslashes(get_option('gms_ga_optout_marker_echotext')) ;
?>
<div class="wrap">
<h2><?php _e('Optionen GA OptOut Marker') ?></h2>
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'] ; ?>?page=gmsgaoptoutmarker.php&updated=true">
<input type="hidden" name="gms_save" value="speichern" />
<table width="100%" cellspacing="2" cellpadding="5" class="form-table">
<tr><td colspan="2"><h2>Einstellungen Marker-Trigger</h2></td></tr>
<tr valign="top">
<th scope="row"><?php _e('IP-Filtermuster:') ?></th>
<td><input name="gms_ga_om_pattern" type="text" id="gms_ga_om_pattern" value="<?php echo $s_pattern ; ?>" size="60" />
<br />
<?php _e('Filtermuster f&uuml;r IP-Adressen hier eingeben oder leer lassen.') ?></td>
</tr>
<tr valign="top">
<th scope="row"><?php _e('Header-Name:') ?></th>
<td><input name="gms_ga_om_headername" type="text" id="gms_ga_om_headername" value="<?php echo $s_hdname ; ?>" size="60" />
<br />
<?php _e('Soll ein Header als Marker genutzt werden, Header mit "HTTP_" als Pr&auml;fix, gross geschrieben und mit einem "_" statt "-" versehen hier und unten den Marker (Header-Wert) angeben. Sonst beides leer lassen.
') ?></td>
</tr>
<tr valign="top">
<th scope="row"><?php _e('Header-Wert:') ?></th>
<td><input name="gms_ga_om_headervalue" type="text" id="gms_ga_om_headervalue" value="<?php echo $s_hdval ; ?>" size="60" />
<br />
<?php _e('Wert des Marker-Headers hier eingeben, wenn dieser verwendet wird.') ?></td>
</tr>
<tr valign="top">
<th scope="row"><?php _e('Text f&uuml;r Ausgabe:') ?></th>
<td><textarea cols="80" rows="5" name="gms_ga_om_echotext" id="gms_ga_om_echotext"><?php echo $s_echotext; ?></textarea>
<br />
<?php _e('Was soll ausgeben werden, wenn der Marker gefunden wird? Beispiel-Definition einer JS-Variable f. Codeanpassung "&lt;script&gt;var gaDim1Value=\'Intern\'&lt;/script&gt;". F&uuml;r GTM stattdessen z. B. folgende Zeile nutzen: "&lt;script&gt;window.dataLayer=window.dataLayer || []; dataLayer.push({\'gaTrafficType\':\'Intern\'});&lt;/script&gt;"') ?></td>
</tr>
</table>
<p class="submit">
<input type="submit" name="Submit" value="<?php _e('Optionen aktualisieren') ?> &raquo;" />
</p>
</form>
</div>
<?php
}
} //Klasse
?>
@mbaersch
Copy link
Author

mbaersch commented Mar 26, 2017

Wordpress-Plugin:

Plugin zur Markierung interner Besucher anhand der IP oder eines Headers zum Ausschluss in Google Analytics.

Zweck
Das Plugin dient dazu, anhand eines IP-Musters und / oder eines individuellen Headers der Anfrage einen Marker (z. B. per JavaScript-Variable oder dataLayer) in den <head> zu implementieren, der zum Ausschluss der internen Besucher aus der Webanalyse bzw. dem Betrieb eines Kontrollprofils für interne Besuche per Filter zu ermöglichen.

Hinweise zur Verwendung
Unter gandke.de/ga-marker findet sich ein ausführlicher Beitrag über den Einsatz des Plugins zum Ausschluss von internem Traffic in Google Analytics. Hier wird auch die Einrichtung eines individuellen Headers beschrieben und es finden sich Hinweise auf ggf. bestehende technische Hürden.

Das Plugin ist als "Rumpfplugin" gedacht und kann an die eigenen Bedürfnisse angepasst werden, um zu den Rahmenbedingungen der eigenen Site zu passen.

Installation
Im Backend der Site kann die heruntergeladene PHP-Datei über "Plugins - Installieren" hochgeladen werden, wenn sie vorher in einem ZIP-Archiv abgelegt wird. Nach Aktivierung kann über "Einstellungen - GA OptOut-Marker" ein IP-Muster und / oder ein Name und ein Sollwert eines individuellen Headers angegeben werden. Es müssen nicht, können aber beide Wege parallel eingesetzt werden. Was nicht genutzt werden soll, darf leer bleiben.

Dadurch wird bei passender IP bzw. passendem Header der angegebene Textblock in den Kopf der Seiten implementiert (der Aufruf von wp_head(); im Template ist dazu erforderlich). Wie damit eine benutzerdefinierte Dimension zum Filtern der Besucher angelegt werden kann, wie ein individueller Header gesendet und konfiguriert wird etc. findet sich im o. a. Blogbeitrag.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment