Integración con WordPress
Añada analíticas centradas en la privacidad a su sitio WordPress. Rastree visitantes, comprenda el comportamiento y haga crecer su audiencia sin comprometer la privacidad.
Solo configuración manual. Zenovay no ofrece actualmente un plugin oficial de WordPress ni una extensión de WooCommerce. Las instrucciones a continuación usan el script de seguimiento estándar con fragmentos en header.php / functions.php, que funcionan de forma fiable en cualquier instalación de WordPress. Donde se mencionen referencias a "seguimiento automático", esto significa un único hook add_action() que usted pega en su tema — no un plugin instalable.
Inicio rápido
| Método | Más adecuado para | Tiempo de configuración |
|---|---|---|
Fragmento en header.php | Temas personalizados | 3 minutos |
Hook en functions.php | Sitios administrados por desarrolladores con exclusión de admins | 5 minutos |
wp_enqueue_script | Sitios que usan estrictamente el sistema de encolado de scripts de WordPress | 5 minutos |
Método 1: Encabezado del tema (Recomendado)
Añada al header.php de su tema antes de </head>:
<!-- Zenovay Analytics -->
<script defer data-tracking-code="YOUR_TRACKING_CODE" src="https://api.zenovay.com/z.js"></script>
Esta es la instalación más sencilla. Funciona en todos los temas que tienen un archivo header.php con la etiqueta </head> visible en la plantilla.
Método 2: Hook en functions.php
Para mayor control (excluir usuarios administradores, carga condicional, etc.), añada al functions.php de su tema:
/**
* 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');
Método 3: wp_enqueue_script
Para una gestión correcta del script siguiendo las convenciones de WordPress:
/**
* 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');
Seguimiento con WooCommerce
Rastree vistas de producto, añadir al carrito y compras en su tienda WooCommerce. Añada al functions.php de su tema:
/**
* 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');
Seguimiento de formularios de contacto
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);
O use el evento JavaScript:
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);
Identificar usuarios con sesión iniciada
Identifique a los usuarios de WordPress para el seguimiento entre sesiones:
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');
Configuración del seguimiento first-party
Omita los bloqueadores de anuncios mediante proxy a través de su dominio. Consulte la Guía de seguimiento first-party para la configuración multiplataforma. Reglas de reescritura específicas de WordPress:
/**
* 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');
Luego actualice su script de seguimiento para usar el proxy:
<script defer
data-tracking-code="YOUR_TRACKING_CODE"
data-api-url="/_z/"
src="/_z/script.js">
</script>
Después de añadir las reglas de reescritura, vaya a Settings → Permalinks y haga clic en Save Changes para vaciar la caché de reescritura.
Compatibilidad con plugins de caché
Excluya las rutas first-party de Zenovay de su plugin de caché para que los eventos se envíen correctamente.
WP Super Cache
Añada a wp-content/wp-cache-config.php:
$cache_rejected_uri = array(
'/_z/',
);
W3 Total Cache
Vaya a Performance → Page Cache y añada /_z/ a Never cache the following pages.
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 — añada /_z/.
Configuración para Multisitio
Para redes WordPress Multisitio, el script de seguimiento vive en el header.php o functions.php de su tema y funciona por sitio según la configuración. Para usar un único código de seguimiento en toda la red:
/**
* 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');
De lo contrario, configure un código de seguimiento diferente por sitio codificándolo directamente en el tema de cada sitio.
Notas de rendimiento
El rastreador de Zenovay es:
- Diferido — no bloquea el renderizado de la página
- Ligero — < 23 KB comprimido con gzip
- Entregado por CDN — almacenado en caché globalmente en el borde
Carga condicional
Omita el seguimiento en páginas específicas:
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');
Resolución de problemas
El script no se carga
- Vea el código fuente de la página (Cmd/Ctrl+U) y busque
<script defer data-tracking-code=...>entre<head>y</head> - Verifique que su código de seguimiento coincida con el valor en el panel de Zenovay
- Abra la consola del navegador y compruebe si hay errores de JavaScript
- Desactive temporalmente el caché para realizar pruebas
- Compruebe si algún plugin de seguridad (Wordfence, iThemes Security, etc.) está bloqueando los scripts externos hacia
api.zenovay.com
Vistas de página duplicadas
- Asegúrese de haber añadido el fragmento una sola vez (no lo pegue en
header.phpY en un hook defunctions.php) - Compruebe si el contenido cargado mediante AJAX está volviendo a activar el seguimiento
- Revise la configuración del plugin de caché
Compras de WooCommerce faltantes
- Verifique que el fragmento se carga en la página de agradecimiento
- Compruebe el flujo de pago de WooCommerce (multipágina vs una sola página) — algunos procesos de pago omiten el hook estándar
woocommerce_thankyou - Asegúrese de que el modo de compatibilidad con jQuery no esté interfiriendo
Problemas de caché
- Excluya las rutas
/_z/de la caché de páginas (consulte Compatibilidad con plugins de caché más arriba) - Vacíe todas las cachés después de los cambios de configuración
- Pruebe en modo incógnito/privado
Consideraciones de seguridad
Content Security Policy
Si su sitio usa una cabecera CSP, permita Zenovay:
script-src 'self' https://api.zenovay.com;
connect-src 'self' https://api.zenovay.com;
Con el proxy first-party, solo se necesita 'self'.
Excluir páginas sensibles
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;
}
Cumplimiento de Privacidad
Para el seguimiento sin cookies, añada data-cookieless="true":
<script defer
data-tracking-code="YOUR_TRACKING_CODE"
data-cookieless="true"
src="https://api.zenovay.com/z.js"></script>
En este modo no se establecen cookies ni entradas en el almacenamiento local — los IDs de visitante solo existen durante la pestaña actual. Consulte la Guía de Cumplimiento de Privacidad para obtener todos los detalles.
Integración con el consentimiento de cookies
Con plugins de consentimiento populares:
// 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);
});
Consulte la Guía de Cumplimiento con GDPR para una configuración detallada.
Recursos relacionados
- Seguimiento first-party
- Eventos personalizados
- Embudos de conversión
- Cumplimiento con GDPR
- Artículo de ayuda sobre la integración con WordPress
¿Necesita ayuda? Contacte a [email protected] o visite nuestro Centro de ayuda.