Wordpress Plugin-Code zur Ausgabe von Infos zu Autor, Kategorie etc. als Variablen im dataLayer für den Google Tag Manager
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
Plugin Name: PageInfos2GTM | |
Plugin URI: https://www.gandke.de/ | |
Description: Nach Aktivierung werden Angaben zu Loginstatus Autor, Monat, Jahr, Kategorie und Tags als wp_utype, wp_aut, wp_month, wp_year, wp_cat und wp_tags - zusammen mit einem Event "wpPageInfo" - als Script im Footer von Seiten oder Beiträgen in den dataLayer geschrieben, um diese z. B. via Google Tag Manager in benutzerdefinierten Dimensionen zu nutzen. | |
Zudem wird der Seitentitel uebersetzungssicher als org_page_title im dataLayer konserviert. | |
Achtung: Das verwendete Template muss wp_footer() aufrufen (was aber die meisten tun sollten ;)) | |
Author: Markus Baersch, gandke marketing & software | |
Author URI: https://www.gandke.de | |
Version: 1.3 | |
*/ | |
function gms_send_post_info_gtm_event() { | |
//Login Status | |
if (is_user_logged_in()) | |
$gtmvars = "'wp_utype':'user'"; | |
else | |
$gtmvars = "'wp_utype':'visitor'"; | |
//Seitentitel im dataLayer - hilfreich bei Uebersetzungen im Browser | |
$gtmvars .= ",'org_page_title':'".trim(wp_title('', false))."'"; | |
if (is_single()||is_page()){ | |
//Kategorien zusammenfassen | |
$allcat = get_the_category(); | |
$cts = ""; | |
foreach ($allcat as $ct) { $cts .= $ct->cat_name.","; } | |
if ($cts) $cts = substr($cts,0,-1); | |
//Tags zusammenfassen | |
$alltags = get_the_tags(); | |
$tgs = ""; | |
if ($alltags) foreach ($alltags as $tg) { $tgs .= $tg->name.","; } | |
if ($tgs) $tgs = substr($tgs,0,-1); | |
$gtmvars .= ",'wp_aut':'".get_the_author(). | |
"','wp_cat':'".$cts. | |
"','wp_tags':'".$tgs. | |
"','wp_month':'".get_the_date('m'). | |
"','wp_year':'".get_the_date('Y')."'"; | |
} | |
echo "<script>window.dataLayer=window.dataLayer||[];dataLayer.push({". | |
$gtmvars.",event:'wpPageInfo'});</script>"; | |
} | |
//Ausgabe der Infos im Footer | |
add_action('wp_footer', 'gms_send_post_info_gtm_event'); | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Wordpress-Plugin:
Plugin zur Ausgabe von Infos zu Loginstatus, Seitentitel, Autor, Kategorie etc. als Variablen im dataLayer für den Google Tag Manager
Zweck
Das Plugin dient dazu, Angaben zu Besuchertyp/Loginstatus ('user' für angemeldete, 'visitor' für nicht angemeldete Besucher), Autor, Monat, Jahr, Kategorie und Tags als
wp_utype
,wp_aut
,wp_month
,wp_year
,wp_cat
undwp_tags
- zusammen mit einem Event `"wpPageInfo"´ - als Script im Footer von Seiten oder Beiträgen in den dataLayer geschrieben, um diese z. B. via Google Tag Manager in benutzerdefinierten Dimensionen zu nutzen.Zudem wird der Seitentitel "übersetzungssicher" als
org_page_title
im dataLayer konserviert.Hinweise zur Verwendung
Die o. a. Variablen werden in den dataLayer geschrieben und müssen dort in einem Google Tag Manager Container eingelesen und zusammen mit dem Seitenaufruf oder einem Event explizit an Google Analytics übergeben werden - das passiert nicht automatisch, sondern erfordert eine aktive Nutzung der Informationen mittels GTM. Eine Anleitung findet sich im Blog
Das Plugin ist als "Rumpfplugin" gedacht und kann an die eigenen Bedürfnisse angepasst werden, um zu den Rahmenbedingungen der eigenen Site zu passen und z. B. weitere Angaben wie die Anzahl der Kommentare o. Ä. zu übergeben.
Installation
Im Backend der Site kann die heruntergeladene PHP-Datei über "Plugins - Installieren" hochgeladen werden, wenn sie als ZIP heruntergeladen oder vorher in einem ZIP-Archiv abgelegt wird. Nach Aktivierung des Plugins "PageInfos2GTM" werden die Daten am Ende des Seitenquelltext in einen Scriptblock geschrieben. Achtung: Der Aufruf von
wp_footer();
im Template ist dazu erforderlich. Wer feststellt, dass ein angepasster Pageview die Information nicht erhält, weil die Ablage im dataLayer zu spät erfolgt, kann die Zeileadd_action('wp_footer', 'gms_send_gtm_event');
im Code wahlweise zuadd_action('wp_head', 'gms_send_gtm_event');
anpassen, um die Daten früher in den dataLayer zu bekommen.