Files
roi-theme/inc/customizer-cta.php
FrankZamora bbc6ed2c98 Refactor: Reorganizar repositorio - Solo tema WordPress
Se movió el repositorio git desde la raíz de WordPress a la carpeta del tema.
Este commit limpia todos los archivos de WordPress del historial de tracking
y mantiene únicamente los archivos del tema apus-theme.

Cambios:
- Eliminado tracking de archivos de WordPress core
- Mantenido solo archivos del tema (97 archivos)
- Actualizado .gitignore para excluir carpetas de desarrollo
- Historial de commits anteriores se mantiene intacto

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 09:15:47 -06:00

258 lines
9.8 KiB
PHP

<?php
/**
* CTA A/B Testing Customizer Settings
*
* Opciones del panel de personalización para configurar
* las dos variantes del CTA (A y B).
*
* @package APUS_Theme
* @since 1.0.0
*/
// Exit if accessed directly
if (!defined('ABSPATH')) {
exit;
}
/**
* Registrar configuraciones del CTA en el Customizer
*/
function apus_customize_cta($wp_customize) {
// Agregar sección para CTA A/B Testing
$wp_customize->add_section('apus_cta', array(
'title' => __('CTA A/B Testing', 'apus-theme'),
'description' => __('Configura las dos variantes del Call-to-Action que se mostrarán aleatoriamente. El sistema asignará automáticamente una variante a cada usuario (50/50).', 'apus-theme'),
'priority' => 132,
));
// =====================================================
// CONFIGURACIÓN GENERAL
// =====================================================
// Habilitar/Deshabilitar CTA
$wp_customize->add_setting('apus_enable_cta', array(
'default' => true,
'sanitize_callback' => 'apus_sanitize_checkbox',
'transport' => 'refresh',
));
$wp_customize->add_control('apus_enable_cta', array(
'label' => __('Habilitar CTA con A/B Testing', 'apus-theme'),
'description' => __('Muestra un Call-to-Action en los posts individuales con dos variantes aleatorias.', 'apus-theme'),
'section' => 'apus_cta',
'type' => 'checkbox',
));
// Auto-insertar CTA (opcional, por defecto usar template tag)
$wp_customize->add_setting('apus_cta_auto_insert', array(
'default' => false,
'sanitize_callback' => 'apus_sanitize_checkbox',
'transport' => 'refresh',
));
$wp_customize->add_control('apus_cta_auto_insert', array(
'label' => __('Auto-insertar CTA después del contenido', 'apus-theme'),
'description' => __('Si está desactivado, usa el template tag apus_display_cta() manualmente.', 'apus-theme'),
'section' => 'apus_cta',
'type' => 'checkbox',
));
// =====================================================
// VARIANTE A - ENFOQUE EN CATÁLOGO
// =====================================================
// Separador visual
$wp_customize->add_setting('apus_cta_a_separator', array(
'sanitize_callback' => 'sanitize_text_field',
));
$wp_customize->add_control(new WP_Customize_Control(
$wp_customize,
'apus_cta_a_separator',
array(
'label' => __('━━━ Variante A: Catálogo ━━━', 'apus-theme'),
'description' => __('Enfoque en acceso al catálogo de 200,000+ APUs', 'apus-theme'),
'section' => 'apus_cta',
'type' => 'hidden',
)
));
// Título Variante A
$wp_customize->add_setting('apus_cta_a_title', array(
'default' => __('Accede a 200,000+ Análisis de Precios Unitarios', 'apus-theme'),
'sanitize_callback' => 'sanitize_text_field',
'transport' => 'postMessage',
));
$wp_customize->add_control('apus_cta_a_title', array(
'label' => __('Título', 'apus-theme'),
'section' => 'apus_cta',
'type' => 'text',
));
// Texto Variante A
$wp_customize->add_setting('apus_cta_a_text', array(
'default' => __('Consulta estructuras completas, insumos y dosificaciones de los APUs más utilizados en construcción en México.', 'apus-theme'),
'sanitize_callback' => 'sanitize_textarea_field',
'transport' => 'postMessage',
));
$wp_customize->add_control('apus_cta_a_text', array(
'label' => __('Texto descriptivo', 'apus-theme'),
'section' => 'apus_cta',
'type' => 'textarea',
));
// Botón Variante A
$wp_customize->add_setting('apus_cta_a_button', array(
'default' => __('Ver Catálogo Completo', 'apus-theme'),
'sanitize_callback' => 'sanitize_text_field',
'transport' => 'postMessage',
));
$wp_customize->add_control('apus_cta_a_button', array(
'label' => __('Texto del botón', 'apus-theme'),
'section' => 'apus_cta',
'type' => 'text',
));
// URL Variante A
$wp_customize->add_setting('apus_cta_a_url', array(
'default' => '#',
'sanitize_callback' => 'esc_url_raw',
'transport' => 'postMessage',
));
$wp_customize->add_control('apus_cta_a_url', array(
'label' => __('URL del botón', 'apus-theme'),
'description' => __('Ejemplo: /catalogo-completo/ o una URL completa', 'apus-theme'),
'section' => 'apus_cta',
'type' => 'url',
));
// =====================================================
// VARIANTE B - ENFOQUE EN MEMBRESÍA
// =====================================================
// Separador visual
$wp_customize->add_setting('apus_cta_b_separator', array(
'sanitize_callback' => 'sanitize_text_field',
));
$wp_customize->add_control(new WP_Customize_Control(
$wp_customize,
'apus_cta_b_separator',
array(
'label' => __('━━━ Variante B: Membresía ━━━', 'apus-theme'),
'description' => __('Enfoque en planes de membresía y acceso premium', 'apus-theme'),
'section' => 'apus_cta',
'type' => 'hidden',
)
));
// Título Variante B
$wp_customize->add_setting('apus_cta_b_title', array(
'default' => __('¿Necesitas Consultar Más APUs?', 'apus-theme'),
'sanitize_callback' => 'sanitize_text_field',
'transport' => 'postMessage',
));
$wp_customize->add_control('apus_cta_b_title', array(
'label' => __('Título', 'apus-theme'),
'section' => 'apus_cta',
'type' => 'text',
));
// Texto Variante B
$wp_customize->add_setting('apus_cta_b_text', array(
'default' => __('Accede a nuestra biblioteca de 200,000 análisis de precios unitarios con estructuras detalladas y listados de insumos.', 'apus-theme'),
'sanitize_callback' => 'sanitize_textarea_field',
'transport' => 'postMessage',
));
$wp_customize->add_control('apus_cta_b_text', array(
'label' => __('Texto descriptivo', 'apus-theme'),
'section' => 'apus_cta',
'type' => 'textarea',
));
// Botón Variante B
$wp_customize->add_setting('apus_cta_b_button', array(
'default' => __('Conocer Planes de Membresía', 'apus-theme'),
'sanitize_callback' => 'sanitize_text_field',
'transport' => 'postMessage',
));
$wp_customize->add_control('apus_cta_b_button', array(
'label' => __('Texto del botón', 'apus-theme'),
'section' => 'apus_cta',
'type' => 'text',
));
// URL Variante B
$wp_customize->add_setting('apus_cta_b_url', array(
'default' => '#',
'sanitize_callback' => 'esc_url_raw',
'transport' => 'postMessage',
));
$wp_customize->add_control('apus_cta_b_url', array(
'label' => __('URL del botón', 'apus-theme'),
'description' => __('Ejemplo: /planes-de-membresia/ o una URL completa', 'apus-theme'),
'section' => 'apus_cta',
'type' => 'url',
));
// =====================================================
// GOOGLE ANALYTICS TRACKING
// =====================================================
// Separador visual
$wp_customize->add_setting('apus_cta_ga_separator', array(
'sanitize_callback' => 'sanitize_text_field',
));
$wp_customize->add_control(new WP_Customize_Control(
$wp_customize,
'apus_cta_ga_separator',
array(
'label' => __('━━━ Google Analytics ━━━', 'apus-theme'),
'description' => __('Configuración para tracking de conversiones', 'apus-theme'),
'section' => 'apus_cta',
'type' => 'hidden',
)
));
// Google Analytics Tracking ID
$wp_customize->add_setting('apus_ga_tracking_id', array(
'default' => '',
'sanitize_callback' => 'sanitize_text_field',
'transport' => 'refresh',
));
$wp_customize->add_control('apus_ga_tracking_id', array(
'label' => __('Google Analytics Tracking ID', 'apus-theme'),
'description' => __('Formato: G-XXXXXXXXXX (GA4) o UA-XXXXXXXXX-X (Universal Analytics). Déjalo vacío si ya tienes GA instalado mediante plugin.', 'apus-theme'),
'section' => 'apus_cta',
'type' => 'text',
));
}
add_action('customize_register', 'apus_customize_cta');
/**
* Agregar script de Google Analytics en el header si está configurado
*/
function apus_output_google_analytics() {
$tracking_id = get_theme_mod('apus_ga_tracking_id', '');
// No mostrar si está vacío o si estamos en el admin
if (empty($tracking_id) || is_admin()) {
return;
}
// No mostrar si es un usuario admin logueado
if (current_user_can('manage_options')) {
return;
}
?>
<!-- Google Analytics (CTA A/B Testing) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=<?php echo esc_attr($tracking_id); ?>"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '<?php echo esc_js($tracking_id); ?>', {
'anonymize_ip': true,
'cookie_flags': 'SameSite=None;Secure'
});
</script>
<?php
}
add_action('wp_head', 'apus_output_google_analytics', 1);