Skip to content

Instantly share code, notes, and snippets.

@mbaersch
Last active August 21, 2022 20:02
Embed
What would you like to do?
Wordpress Plugin-Code zur Ausgabe von Infos zu Autor, Kategorie etc. als Variablen im dataLayer für den Google Tag Manager
<?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&auml;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 &amp; 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');
?>
@mbaersch
Copy link
Author

mbaersch commented Feb 3, 2018

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 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 "ü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 Zeile add_action('wp_footer', 'gms_send_gtm_event'); im Code wahlweise zu add_action('wp_head', 'gms_send_gtm_event'); anpassen, um die Daten früher in den dataLayer zu bekommen.

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