Files
roi-theme/wp-content/themes/apus-theme/inc/enqueue-scripts.php
FrankZamora 6e4b786595 [NIVEL 1 COMPLETADO] Estructura HTML Base + Sistema de Variables CSS - Issues #47 #48
Implementación de CIMIENTOS del tema según template index.html.
Sin estos cambios NO se puede avanzar a componentes visuales.

**Issue #47: Estructura HTML Base**
- single.php: Reemplazada estructura con Grid Bootstrap exacto del template
  - Agregado: <div class="container"> → <div class="row">
  - Columna principal: <div class="col-lg-9"> (línea 28)
  - Columna sidebar: <div class="col-lg-3"> (línea 244)
  - Eliminado: <div class="content-wrapper"> (obsoleto)
- Estructura ahora coincide 100% con template líneas 347-350

**Issue #48: Sistema de Variables CSS**
- Creado: assets/css/variables.css (180 líneas)
  - 50+ variables CSS de colores paleta RDash
  - Variables tipográficas (fonts, sizes, weights)
  - Variables de espaciado y bordes
  - Variables de sombras y transiciones
  - Variables de gradientes del template
- Registrado en enqueue-scripts.php (línea 51-58)
- Dependencia: se carga DESPUÉS de Bootstrap

**Archivos Modificados:**
- wp-content/themes/apus-theme/single.php
- wp-content/themes/apus-theme/inc/enqueue-scripts.php

**Archivos Creados:**
- wp-content/themes/apus-theme/assets/css/variables.css

**Referencia Template:**
D:\_Desarrollo\02AnalisisDePreciosUnitarios\analisisdepreciosunitarios.com\_planeacion\theme-template\index.html

**Resultado:**
NIVEL 1 (CIMIENTOS) está completo. Ahora se puede avanzar a NIVEL 2 (Componentes Principales).

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 20:00:07 -06:00

476 lines
11 KiB
PHP

<?php
/**
* Enqueue Bootstrap 5 and Custom Scripts
*
* @package Apus_Theme
* @since 1.0.0
*/
// Exit if accessed directly
if (!defined('ABSPATH')) {
exit;
}
/**
* Enqueue typography system
*/
function apus_enqueue_fonts() {
wp_enqueue_style(
'apus-fonts',
get_template_directory_uri() . '/assets/css/fonts.css',
array(),
'1.0.0',
'all'
);
}
add_action('wp_enqueue_scripts', 'apus_enqueue_fonts', 1);
/**
* Enqueue Bootstrap 5 styles and scripts
*/
function apus_enqueue_bootstrap() {
// Bootstrap CSS - with high priority
wp_enqueue_style(
'apus-bootstrap',
get_template_directory_uri() . '/assets/vendor/bootstrap/css/bootstrap.min.css',
array('apus-fonts'),
'5.3.2',
'all'
);
// Bootstrap Icons CSS - from CDN
wp_enqueue_style(
'bootstrap-icons',
'https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css',
array(),
'1.11.3',
'all'
);
// Variables CSS del Template RDash (NIVEL 1 - BLOQUEANTE - Issue #48)
wp_enqueue_style(
'apus-variables',
get_template_directory_uri() . '/assets/css/variables.css',
array('apus-bootstrap'),
APUS_VERSION,
'all'
);
// Bootstrap JS Bundle - in footer with defer
wp_enqueue_script(
'apus-bootstrap-js',
get_template_directory_uri() . '/assets/vendor/bootstrap/js/bootstrap.bundle.min.js',
array(),
'5.3.2',
array(
'in_footer' => true,
'strategy' => 'defer',
)
);
// Dequeue jQuery if it was enqueued
wp_dequeue_script('jquery');
wp_deregister_script('jquery');
}
add_action('wp_enqueue_scripts', 'apus_enqueue_bootstrap', 5);
/**
* Enqueue header styles and scripts
*/
function apus_enqueue_header() {
// Header CSS
wp_enqueue_style(
'apus-header',
get_template_directory_uri() . '/assets/css/header.css',
array('apus-fonts'),
'1.0.0',
'all'
);
// Header JS - with defer strategy
wp_enqueue_script(
'apus-header-js',
get_template_directory_uri() . '/assets/js/header.js',
array(),
'1.0.0',
array(
'in_footer' => true,
'strategy' => 'defer',
)
);
}
add_action('wp_enqueue_scripts', 'apus_enqueue_header', 10);
/**
* Enqueue custom styles and main JavaScript
*/
function apus_enqueue_custom_assets() {
// Custom Styles - navbar animations and theme components
wp_enqueue_style(
'apus-custom-style',
get_template_directory_uri() . '/assets/css/custom-style.css',
array('apus-bootstrap'),
'1.0.0',
'all'
);
// Main JavaScript - navbar scroll effects and interactions
wp_enqueue_script(
'apus-main-js',
get_template_directory_uri() . '/assets/js/main.js',
array('apus-bootstrap-js'),
'1.0.0',
array(
'in_footer' => true,
'strategy' => 'defer',
)
);
}
add_action('wp_enqueue_scripts', 'apus_enqueue_custom_assets', 11);
/**
* Enqueue footer styles
*/
function apus_enqueue_footer_styles() {
wp_enqueue_style(
'apus-footer',
get_template_directory_uri() . '/assets/css/footer.css',
array('apus-bootstrap'),
APUS_VERSION,
'all'
);
}
add_action('wp_enqueue_scripts', 'apus_enqueue_footer_styles', 12);
/**
* Enqueue accessibility styles and scripts
*/
function apus_enqueue_accessibility() {
// Accessibility CSS
wp_enqueue_style(
'apus-accessibility',
get_template_directory_uri() . '/assets/css/accessibility.css',
array('apus-theme-style'),
APUS_VERSION,
'all'
);
// Accessibility JavaScript
wp_enqueue_script(
'apus-accessibility-js',
get_template_directory_uri() . '/assets/js/accessibility.js',
array('apus-bootstrap-js'),
APUS_VERSION,
array(
'in_footer' => true,
'strategy' => 'defer',
)
);
}
add_action('wp_enqueue_scripts', 'apus_enqueue_accessibility', 15);
/**
* Enqueue del script de carga retrasada de AdSense
*
* Este script se encarga de detectar la primera interacción del usuario
* (scroll, click, touch, etc.) y cargar los scripts de AdSense solo
* en ese momento, mejorando significativamente el rendimiento inicial.
*/
function apus_enqueue_adsense_loader() {
// Solo ejecutar en frontend
if (is_admin()) {
return;
}
// Verificar si el retardo de AdSense está habilitado
$delay_enabled = apus_get_option('apus_adsense_delay_enabled', '1');
if ($delay_enabled !== '1') {
return;
}
// Enqueue del script de carga de AdSense
wp_enqueue_script(
'apus-adsense-loader',
get_template_directory_uri() . '/assets/js/adsense-loader.js',
array(),
APUS_VERSION,
array(
'in_footer' => true,
'strategy' => 'defer',
)
);
}
add_action('wp_enqueue_scripts', 'apus_enqueue_adsense_loader', 10);
/**
* Enqueue Table of Contents styles and scripts
*/
function apus_enqueue_toc_assets() {
// Only enqueue on single posts
if (!is_single()) {
return;
}
// TOC CSS
wp_enqueue_style(
'apus-toc-style',
get_template_directory_uri() . '/assets/css/toc.css',
array('apus-bootstrap'),
APUS_VERSION,
'all'
);
// TOC JS
wp_enqueue_script(
'apus-toc-script',
get_template_directory_uri() . '/assets/js/toc.js',
array(),
APUS_VERSION,
array(
'in_footer' => true,
'strategy' => 'defer',
)
);
}
add_action('wp_enqueue_scripts', 'apus_enqueue_toc_assets', 10);
/**
* Enqueue theme core styles
*/
function apus_enqueue_theme_styles() {
// Theme Core Styles
wp_enqueue_style(
'apus-theme',
get_template_directory_uri() . '/assets/css/theme.css',
array('apus-bootstrap'),
'1.0.0',
'all'
);
// Theme Animations
wp_enqueue_style(
'apus-animations',
get_template_directory_uri() . '/assets/css/animations.css',
array('apus-theme'),
'1.0.0',
'all'
);
// Theme Responsive Styles
wp_enqueue_style(
'apus-responsive',
get_template_directory_uri() . '/assets/css/responsive.css',
array('apus-theme'),
'1.0.0',
'all'
);
// Theme Utilities
wp_enqueue_style(
'apus-utilities',
get_template_directory_uri() . '/assets/css/utilities.css',
array('apus-theme'),
'1.0.0',
'all'
);
// Print Styles
wp_enqueue_style(
'apus-print',
get_template_directory_uri() . '/assets/css/print.css',
array(),
'1.0.0',
'print'
);
}
add_action('wp_enqueue_scripts', 'apus_enqueue_theme_styles', 13);
/**
* Enqueue social share styles
*/
function apus_enqueue_social_share_styles() {
// Only enqueue on single posts
if (!is_single()) {
return;
}
// Social Share CSS
wp_enqueue_style(
'apus-social-share',
get_template_directory_uri() . '/assets/css/social-share.css',
array('apus-bootstrap'),
APUS_VERSION,
'all'
);
}
add_action('wp_enqueue_scripts', 'apus_enqueue_social_share_styles', 14);
/**
* Enqueue APU Tables styles
*/
function apus_enqueue_apu_tables_styles() {
// APU Tables CSS
wp_enqueue_style(
'apus-tables-apu',
get_template_directory_uri() . '/assets/css/tables-apu.css',
array('apus-bootstrap'),
APUS_VERSION,
'all'
);
}
add_action('wp_enqueue_scripts', 'apus_enqueue_apu_tables_styles', 15);
/**
* Enqueue CTA A/B Testing styles and scripts
*/
function apus_enqueue_cta_assets() {
// Solo enqueue en posts individuales
if (!is_single()) {
return;
}
// Verificar si el CTA está habilitado
$enable_cta = get_theme_mod('apus_enable_cta', true);
if (!$enable_cta) {
return;
}
// CTA CSS
wp_enqueue_style(
'apus-cta-style',
get_template_directory_uri() . '/assets/css/cta.css',
array('apus-bootstrap'),
APUS_VERSION,
'all'
);
// CTA Tracking JS
wp_enqueue_script(
'apus-cta-tracking',
get_template_directory_uri() . '/assets/js/cta-tracking.js',
array(),
APUS_VERSION,
array(
'in_footer' => true,
'strategy' => 'defer',
)
);
}
add_action('wp_enqueue_scripts', 'apus_enqueue_cta_assets', 16);
/**
* Enqueue CTA Box Sidebar styles (Issue #36)
*/
function apus_enqueue_cta_box_sidebar_assets() {
// Solo enqueue en posts individuales
if (!is_single()) {
return;
}
// CTA Box Sidebar CSS
wp_enqueue_style(
'apus-cta-box-sidebar',
get_template_directory_uri() . '/assets/css/cta-box-sidebar.css',
array('apus-bootstrap'),
APUS_VERSION,
'all'
);
}
add_action('wp_enqueue_scripts', 'apus_enqueue_cta_box_sidebar_assets', 17);
/**
* Enqueue Top Notification Bar styles and scripts (Issue #39)
*/
function apus_enqueue_notification_bar_assets() {
// Notification Bar CSS
wp_enqueue_style(
'apus-notification-bar',
get_template_directory_uri() . '/assets/css/notification-bar.css',
array('apus-bootstrap'),
APUS_VERSION,
'all'
);
// Notification Bar JavaScript
wp_enqueue_script(
'apus-notification-bar-js',
get_template_directory_uri() . '/assets/js/notification-bar.js',
array(),
APUS_VERSION,
array(
'in_footer' => true,
'strategy' => 'defer',
)
);
}
add_action('wp_enqueue_scripts', 'apus_enqueue_notification_bar_assets', 18);
/**
* Enqueue Footer Contact Form styles and scripts (Issue #37)
*/
function apus_enqueue_footer_contact_assets() {
// Solo enqueue si el widget está activo
if (!is_active_sidebar('footer-contact')) {
return;
}
// Footer Contact CSS
wp_enqueue_style(
'apus-footer-contact',
get_template_directory_uri() . '/assets/css/footer-contact.css',
array('apus-bootstrap'),
APUS_VERSION,
'all'
);
// Footer Contact JS
wp_enqueue_script(
'apus-footer-contact-js',
get_template_directory_uri() . '/assets/js/footer-contact.js',
array(),
APUS_VERSION,
array(
'in_footer' => true,
'strategy' => 'defer',
)
);
}
add_action('wp_enqueue_scripts', 'apus_enqueue_footer_contact_assets', 19);
/**
* Enqueue Hero Section styles (Issue #40)
*/
function apus_enqueue_hero_section_styles() {
// Solo enqueue en posts individuales
if (!is_single()) {
return;
}
// Hero Section CSS
wp_enqueue_style(
'apus-hero-section',
get_template_directory_uri() . '/assets/css/hero-section.css',
array('apus-bootstrap'),
APUS_VERSION,
'all'
);
}
add_action('wp_enqueue_scripts', 'apus_enqueue_hero_section_styles', 20);