WordPress-Integration
Fügen Sie datenschutzfreundliche Analysen zu Ihrer WordPress-Website hinzu. Verfolgen Sie Besucher, verstehen Sie das Verhalten und wachsen Sie mit Ihrem Publikum — ohne die Privatsphäre zu beeinträchtigen.
Nur manuelle Einrichtung. Zenovay bietet derzeit kein offizielles WordPress-Plugin und keine WooCommerce-Erweiterung an. Die folgenden Anweisungen verwenden das Standard-Tracking-Skript mit Snippets in header.php / functions.php, die auf jeder WordPress-Installation zuverlässig funktionieren. Überall, wo unten auf „automatisches Tracking" verwiesen wird, ist damit ein einzelner add_action()-Hook gemeint, den Sie in Ihr Theme einfügen — kein installierbares Plugin.
Schnellstart
| Methode | Am besten für | Einrichtungszeit |
|---|---|---|
header.php-Snippet | Benutzerdefinierte Themes | 3 Minuten |
functions.php-Hook | Entwicklerverwaltete Websites mit Admin-Ausschluss | 5 Minuten |
wp_enqueue_script | Websites, die strikt das WordPress-Script-Enqueueing verwenden | 5 Minuten |
Methode 1: Theme-Header (Empfohlen)
Fügen Sie dies in die header.php Ihres Themes vor </head> ein:
<!-- Zenovay Analytics -->
<script defer data-tracking-code="YOUR_TRACKING_CODE" src="https://api.zenovay.com/z.js"></script>
Dies ist die einfachste Installation. Funktioniert auf allen Themes, die eine header.php-Datei und das sichtbare </head>-Tag im Template haben.
Methode 2: functions.php-Hook
Für mehr Kontrolle (Admin-Benutzer ausschließen, bedingtes Laden usw.) fügen Sie dies in die functions.php Ihres Themes ein:
/**
* Add Zenovay Analytics tracking script
*/
function zenovay_tracking_script() {
// Don't track admin users (optional)
if (current_user_can('manage_options')) {
return;
}
?>
<script defer data-tracking-code="YOUR_TRACKING_CODE" src="https://api.zenovay.com/z.js"></script>
<?php
}
add_action('wp_head', 'zenovay_tracking_script');
Methode 3: wp_enqueue_script
Für ordnungsgemäßes Script-Management nach WordPress-Konventionen:
/**
* Enqueue Zenovay Analytics script
*/
function zenovay_enqueue_scripts() {
if (current_user_can('manage_options')) {
return;
}
wp_enqueue_script(
'zenovay-analytics',
'https://api.zenovay.com/z.js',
array(), // No dependencies
null, // No version (external script)
false // Load in header
);
add_filter('script_loader_tag', function($tag, $handle) {
if ('zenovay-analytics' === $handle) {
return str_replace(' src', ' defer data-tracking-code="YOUR_TRACKING_CODE" src', $tag);
}
return $tag;
}, 10, 2);
}
add_action('wp_enqueue_scripts', 'zenovay_enqueue_scripts');
WooCommerce-Tracking
Verfolgen Sie Produktaufrufe, In-den-Warenkorb und Käufe in Ihrem WooCommerce-Shop. Fügen Sie dies in die functions.php Ihres Themes ein:
/**
* Zenovay WooCommerce Event Tracking
*/
// Track product views
function zenovay_track_product_view() {
if (!is_product()) return;
global $product;
?>
<script>
document.addEventListener('DOMContentLoaded', function() {
if (window.zenovay) {
window.zenovay('track', 'product_viewed', {
product_id: '<?php echo esc_js($product->get_id()); ?>',
product_name: '<?php echo esc_js($product->get_name()); ?>',
price: <?php echo $product->get_price(); ?>,
currency: '<?php echo get_woocommerce_currency(); ?>',
category: '<?php echo esc_js(wc_get_product_category_list($product->get_id())); ?>'
});
}
});
</script>
<?php
}
add_action('wp_footer', 'zenovay_track_product_view');
// Track add to cart
function zenovay_track_add_to_cart($cart_item_key, $product_id, $quantity) {
$product = wc_get_product($product_id);
?>
<script>
if (window.zenovay) {
window.zenovay('track', 'add_to_cart', {
product_id: '<?php echo esc_js($product_id); ?>',
product_name: '<?php echo esc_js($product->get_name()); ?>',
price: <?php echo $product->get_price(); ?>,
quantity: <?php echo $quantity; ?>,
currency: '<?php echo get_woocommerce_currency(); ?>'
});
}
</script>
<?php
}
add_action('woocommerce_add_to_cart', 'zenovay_track_add_to_cart', 10, 3);
// Track purchases on thank you page
function zenovay_track_purchase($order_id) {
$order = wc_get_order($order_id);
if (!$order) return;
// Only track once
if ($order->get_meta('_zenovay_tracked')) return;
$order->update_meta_data('_zenovay_tracked', true);
$order->save();
$items = array();
foreach ($order->get_items() as $item) {
$items[] = array(
'product_id' => $item->get_product_id(),
'name' => $item->get_name(),
'price' => $item->get_total(),
'quantity' => $item->get_quantity()
);
}
?>
<script>
document.addEventListener('DOMContentLoaded', function() {
if (window.zenovay) {
window.zenovay('track', 'purchase', {
transaction_id: '<?php echo esc_js($order->get_order_number()); ?>',
revenue: <?php echo $order->get_total(); ?>,
currency: '<?php echo $order->get_currency(); ?>',
tax: <?php echo $order->get_total_tax(); ?>,
shipping: <?php echo $order->get_shipping_total(); ?>,
items: <?php echo json_encode($items); ?>
});
}
});
</script>
<?php
}
add_action('woocommerce_thankyou', 'zenovay_track_purchase');
Kontaktformular-Tracking
Contact Form 7
function zenovay_track_cf7_submission($contact_form, $result) {
if ($result['status'] !== 'mail_sent') return;
?>
<script>
if (window.zenovay) {
window.zenovay('track', 'form_submitted', {
form_id: '<?php echo esc_js($contact_form->id()); ?>',
form_name: '<?php echo esc_js($contact_form->title()); ?>'
});
}
</script>
<?php
}
add_action('wpcf7_mail_sent', 'zenovay_track_cf7_submission', 10, 2);
Oder verwenden Sie das JavaScript-Ereignis:
document.addEventListener('wpcf7mailsent', function(event) {
if (window.zenovay) {
window.zenovay('track', 'form_submitted', {
form_id: event.detail.contactFormId,
});
}
});
Gravity Forms
function zenovay_track_gf_submission($entry, $form) {
?>
<script>
if (window.zenovay) {
window.zenovay('track', 'form_submitted', {
form_id: '<?php echo esc_js($form['id']); ?>',
form_name: '<?php echo esc_js($form['title']); ?>'
});
}
</script>
<?php
}
add_action('gform_after_submission', 'zenovay_track_gf_submission', 10, 2);
WPForms
function zenovay_track_wpforms_submission($fields, $entry, $form_data) {
?>
<script>
if (window.zenovay) {
window.zenovay('track', 'form_submitted', {
form_id: '<?php echo esc_js($form_data['id']); ?>',
form_name: '<?php echo esc_js($form_data['settings']['form_title']); ?>'
});
}
</script>
<?php
}
add_action('wpforms_process_complete', 'zenovay_track_wpforms_submission', 10, 3);
Eingeloggte Benutzer identifizieren
Identifizieren Sie WordPress-Benutzer für sitzungsübergreifendes Tracking:
function zenovay_identify_user() {
if (!is_user_logged_in()) return;
$user = wp_get_current_user();
?>
<script>
document.addEventListener('DOMContentLoaded', function() {
if (window.zenovay) {
window.zenovay('identify', {
userId: '<?php echo esc_js($user->ID); ?>',
email: '<?php echo esc_js($user->user_email); ?>',
name: '<?php echo esc_js($user->display_name); ?>'
});
}
});
</script>
<?php
}
add_action('wp_footer', 'zenovay_identify_user');
First-Party-Tracking-Einrichtung
Umgehen Sie Ad-Blocker durch Proxying über Ihre Domain. Weitere Informationen finden Sie im First-Party-Tracking-Leitfaden für die plattformübergreifende Einrichtung. WordPress-spezifische Rewrite-Regeln:
/**
* Add rewrite rules for Zenovay first-party proxy
*/
function zenovay_add_rewrite_rules() {
add_rewrite_rule('^_z/script\.js$', 'index.php?zenovay_proxy=script', 'top');
add_rewrite_rule('^_z/event$', 'index.php?zenovay_proxy=event', 'top');
}
add_action('init', 'zenovay_add_rewrite_rules');
function zenovay_query_vars($vars) {
$vars[] = 'zenovay_proxy';
return $vars;
}
add_filter('query_vars', 'zenovay_query_vars');
function zenovay_proxy_handler() {
$proxy = get_query_var('zenovay_proxy');
if (!$proxy) return;
if ($proxy === 'script') {
header('Content-Type: application/javascript');
echo file_get_contents('https://api.zenovay.com/z.js');
exit;
}
if ($proxy === 'event') {
$response = wp_remote_post('https://api.zenovay.com/e/' . $_GET['tracking_code'], [
'body' => file_get_contents('php://input'),
'headers' => ['Content-Type' => 'application/json']
]);
header('Content-Type: application/json');
echo wp_remote_retrieve_body($response);
exit;
}
}
add_action('template_redirect', 'zenovay_proxy_handler');
Aktualisieren Sie dann Ihr Tracking-Skript, um den Proxy zu verwenden:
<script defer
data-tracking-code="YOUR_TRACKING_CODE"
data-api-url="/_z/"
src="/_z/script.js">
</script>
Gehen Sie nach dem Hinzufügen der Rewrite-Regeln zu Settings → Permalinks und klicken Sie auf Save Changes, um den Rewrite-Cache zu leeren.
Cache-Plugin-Kompatibilität
Schließen Sie die Zenovay First-Party-Routen von Ihrem Cache-Plugin aus, damit Ereignisse korrekt übermittelt werden.
WP Super Cache
Fügen Sie dies in wp-content/wp-cache-config.php ein:
$cache_rejected_uri = array(
'/_z/',
);
W3 Total Cache
Gehen Sie zu Performance → Page Cache und fügen Sie /_z/ unter Never cache the following pages hinzu.
LiteSpeed Cache
LiteSpeed Cache → Cache → Excludes → Do Not Cache URIs:
/_z/
WP Rocket
Settings → WP Rocket → Advanced Rules → Never Cache URL(s):
/_z/(.*)
WP Fastest Cache
WP Fastest Cache → Exclude → Exclude Pages — fügen Sie /_z/ hinzu.
Multisite-Konfiguration
Für WordPress-Multisite-Netzwerke lebt das Tracking-Skript in der header.php oder functions.php Ihres Themes und funktioniert pro Website wie konfiguriert. Um einen einzigen Tracking-Code über das gesamte Netzwerk zu verwenden:
/**
* Use a single tracking code across the multisite network
*/
function zenovay_network_tracking_code() {
return 'YOUR_NETWORK_TRACKING_CODE';
}
add_filter('zenovay_tracking_code', 'zenovay_network_tracking_code');
Andernfalls konfigurieren Sie für jede Website einen anderen Tracking-Code, indem Sie ihn im Theme der jeweiligen Website fest eintragen.
Leistungshinweise
Das Zenovay-Tracking-Skript ist:
- Verzögert — blockiert das Seiten-Rendering nicht
- Leichtgewichtig — < 23 KB gzip-komprimiert
- CDN-ausgeliefert — global am Edge gecacht
Bedingtes Laden
Tracking auf bestimmten Seiten überspringen:
function zenovay_conditional_loading() {
if (is_admin()) return;
if (is_page(array('privacy-policy', 'terms'))) return;
?>
<script defer data-tracking-code="YOUR_TRACKING_CODE" src="https://api.zenovay.com/z.js"></script>
<?php
}
add_action('wp_head', 'zenovay_conditional_loading');
Fehlerbehebung
Skript lädt nicht
- Zeigen Sie den Seitenquelltext an (Cmd/Ctrl+U) und suchen Sie nach
<script defer data-tracking-code=...>zwischen<head>und</head> - Überprüfen Sie, ob Ihr Tracking-Code mit dem Wert im Zenovay Dashboard übereinstimmt
- Öffnen Sie die Browser-Konsole und prüfen Sie auf JavaScript-Fehler
- Deaktivieren Sie vorübergehend das Caching zum Testen
- Prüfen Sie, ob ein Sicherheits-Plugin (Wordfence, iThemes Security usw.) externe Skripte von
api.zenovay.comblockiert
Doppelte Seitenaufrufe
- Stellen Sie sicher, dass Sie das Snippet nur einmal hinzugefügt haben (fügen Sie es nicht sowohl in
header.phpALS AUCH in einenfunctions.php-Hook ein) - Prüfen Sie, ob AJAX-geladene Inhalte das Tracking erneut auslösen
- Überprüfen Sie die Cache-Plugin-Konfiguration
WooCommerce-Käufe fehlen
- Überprüfen Sie, ob das Snippet auf der Danke-Seite lädt
- Prüfen Sie den WooCommerce-Checkout-Ablauf (mehrere Seiten vs. eine Seite) — einige Checkouts überspringen den Standard-
woocommerce_thankyou-Hook - Stellen Sie sicher, dass der jQuery-Kompatibilitätsmodus nicht stört
Caching-Probleme
- Schließen Sie
/_z/-Routen vom Seiten-Cache aus (siehe Cache-Plugin-Kompatibilität oben) - Leeren Sie alle Caches nach Konfigurationsänderungen
- Testen Sie im Inkognito-/Privatbrowser-Modus
Sicherheitsüberlegungen
Content Security Policy
Wenn Ihre Website einen CSP-Header verwendet, erlauben Sie Zenovay:
script-src 'self' https://api.zenovay.com;
connect-src 'self' https://api.zenovay.com;
Mit dem First-Party-Proxy wird nur 'self' benötigt.
Sensible Seiten ausschließen
function zenovay_should_track() {
if (is_admin()) return false;
if (is_page(array('my-account', 'checkout'))) return false;
if (current_user_can('manage_options')) return false;
return true;
}
Datenschutz-Compliance
Für Cookie-freies Tracking fügen Sie data-cookieless="true" hinzu:
<script defer
data-tracking-code="YOUR_TRACKING_CODE"
data-cookieless="true"
src="https://api.zenovay.com/z.js"></script>
In diesem Modus werden keine Cookies oder Local-Storage-Einträge gesetzt — Besucher-IDs existieren nur für den aktuellen Tab. Weitere Details finden Sie im Datenschutz-Compliance-Leitfaden.
Integration von Cookie-Einwilligungs-Plugins
Mit gängigen Einwilligungs-Plugins:
// CookieYes — load tracking after consent
document.addEventListener('cookieyes_consent_update', function(e) {
if (e.detail.accepted.includes('analytics')) {
var s = document.createElement('script');
s.defer = true;
s.src = 'https://api.zenovay.com/z.js';
s.dataset.trackingCode = 'YOUR_TRACKING_CODE';
document.head.appendChild(s);
}
});
// Complianz — same pattern
document.addEventListener('cmplz_fire_statistics', function() {
var s = document.createElement('script');
s.defer = true;
s.src = 'https://api.zenovay.com/z.js';
s.dataset.trackingCode = 'YOUR_TRACKING_CODE';
document.head.appendChild(s);
});
Weitere Details finden Sie im GDPR-Compliance-Leitfaden.
Weiterführende Ressourcen
- First-Party-Tracking
- Benutzerdefinierte Ereignisse
- Konversionstrichter
- GDPR-Compliance
- WordPress-Integrations-Hilfeartikel
Brauchen Sie Hilfe? Kontaktieren Sie [email protected] oder besuchen Sie unser Help Center.