Implementación completa de estilos CSS que replican componentes del template RDash según validación de Issue #57. **Archivos CSS Creados:** 1. **buttons.css (Issue #58)** - Botón "Let's Talk" en navbar - Gradiente naranja: linear-gradient(135deg, #FF6B35 0%, #FF8C42 100%) - Hover: translateY(-2px) con shadow profesional - Box-shadow: rgba(255, 107, 53, 0.3) - Border-radius: 6px, padding: 0.5rem 1.5rem - Responsive: width 100% en móvil (<991.98px) - Template ref: css/style.css líneas 527-552 2. **hero.css (Issue #59)** - Hero Section con gradiente azul - Background: linear-gradient(135deg, #1e3a5f 0%, #2c5282 100%) - Box-shadow: 0 4px 16px rgba(30, 58, 95, 0.25) - H1 color: #ffffff con text-shadow - Category badges hero: backdrop-filter blur(10px) - Badge background: rgba(255, 255, 255, 0.15) - Border: 1px solid rgba(255, 255, 255, 0.2) - Hover: translateY(-2px), shadow profesional - Template ref: css/style.css líneas 122-129 3. **badges.css (Issue #62)** - Clase .category-badge genérica - Background: #e9ecef, border-radius: 20px - Color: #6c757d, font-size: 0.813rem - Padding: 0.375rem 0.875rem - Variante .category-badge-hero para fondos oscuros - Backdrop-filter: blur(10px) - Hover transitions: all 0.3s ease - Template ref: css/style.css líneas 459-490 4. **post-content.css (Issue #63)** - Typography de contenido - H2: font-size 2rem, border-bottom 1px solid #eee - H2 color: #1e3a5f, margin-top: 2.5rem - H3: font-size 1.5rem, color: #2c5282 - Párrafos: line-height 1.8, font-size 1.1rem - Links: color #0d6efd, underline, font-weight 500 - Blockquote: border-left 4px solid #0d6efd - Code: background #f8f9fa, color #e83e8c - Pre: background #f8f9fa, border-radius 8px - Responsive: H2 1.5rem, párrafos 1rem en móvil - Template ref: css/style.css líneas 208-227 5. **pagination.css (Issue #64)** - Paginación personalizada - Page-link: border-radius 6px, padding 0.5rem 0.875rem - Hover: translateY(-2px), box-shadow profesional - Active: linear-gradient(135deg, #0d6efd 0%, #0a58ca 100%) - Active font-weight: 600 - Disabled: opacity 0.5, cursor not-allowed - Responsive: hide intermediate numbers en móvil - Dark mode support - Print: display none - Template ref: css/style.css líneas 180-207 **Archivos CSS Modificados:** 1. **related-posts.css (Issue #60)** - Corrección background - Línea 55: background: #f8f9fa (antes #f7fafc) - Mantiene hover transition a #ffffff - Border-left 4px gradiente animado - Gradiente: linear-gradient(180deg, #1e3a5f 0%, #1a73e8 100%) - Opacity border: 0 → 1 en hover - Transform: translateY(-8px) - Shadow: 0 12px 32px rgba(26, 115, 232, 0.15) **Verificación:** 1. **toc.css (Issue #61)** - VERIFICADO ✅ - Ya tiene todos los estilos correctos - Background: #f8f9fa (línea 16) - Border: 1px solid #dee2e6 (línea 17) - Border-left 3px en links activos (líneas 180, 199) - Scrollbar 6px con colores #cbd5e0 y #a0aec0 (líneas 334-349) - Sticky position con top: 5.5rem (líneas 22-23) - Issue #55 completado previamente **Integración:** - **inc/enqueue-scripts.php** - Modificado - Nueva función: apus_enqueue_fase2_styles() prioridad 6 - Enqueue buttons.css (global) - Enqueue hero.css (global) - Enqueue badges.css (global) - Enqueue pagination.css (global) - Enqueue post-content.css (solo is_single) - Enqueue related-posts.css (solo is_single) - Sintaxis PHP validada: ✅ Sin errores **Estadísticas:** - Archivos CSS nuevos: 5 (buttons, hero, badges, post-content, pagination) - Archivos CSS modificados: 2 (related-posts, enqueue-scripts) - Líneas de código CSS: 700+ líneas - Issues completados: 7 (#58, #59, #60, #61, #62, #63, #64) - Validación PHP: ✅ Sin errores **Próximo Paso:** Validación visual del usuario para verificar que tema coincide con template antes de proceder a FASE 3 (detalles y ajustes finos). Relacionado con: #57 (Issue principal), #58-64 (sub-issues) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
541 lines
13 KiB
PHP
541 lines
13 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 FASE 2 CSS - Template RDash Component Styles (Issues #58-64)
|
|
*
|
|
* Estilos que replican componentes del template RDash
|
|
*/
|
|
function apus_enqueue_fase2_styles() {
|
|
// Buttons CSS - Let's Talk button (Issue #58)
|
|
wp_enqueue_style(
|
|
'apus-buttons',
|
|
get_template_directory_uri() . '/assets/css/buttons.css',
|
|
array('apus-bootstrap'),
|
|
APUS_VERSION,
|
|
'all'
|
|
);
|
|
|
|
// Hero Section CSS - Gradiente azul (Issue #59)
|
|
wp_enqueue_style(
|
|
'apus-hero',
|
|
get_template_directory_uri() . '/assets/css/hero.css',
|
|
array('apus-bootstrap'),
|
|
APUS_VERSION,
|
|
'all'
|
|
);
|
|
|
|
// Category Badges CSS - Clase genérica (Issue #62)
|
|
wp_enqueue_style(
|
|
'apus-badges',
|
|
get_template_directory_uri() . '/assets/css/badges.css',
|
|
array('apus-bootstrap'),
|
|
APUS_VERSION,
|
|
'all'
|
|
);
|
|
|
|
// Pagination CSS - Estilos personalizados (Issue #64)
|
|
wp_enqueue_style(
|
|
'apus-pagination',
|
|
get_template_directory_uri() . '/assets/css/pagination.css',
|
|
array('apus-bootstrap'),
|
|
APUS_VERSION,
|
|
'all'
|
|
);
|
|
|
|
// Post Content Typography - Solo en posts individuales (Issue #63)
|
|
if (is_single()) {
|
|
wp_enqueue_style(
|
|
'apus-post-content',
|
|
get_template_directory_uri() . '/assets/css/post-content.css',
|
|
array('apus-bootstrap'),
|
|
APUS_VERSION,
|
|
'all'
|
|
);
|
|
|
|
// Related Posts CSS - Background gris (Issue #60)
|
|
wp_enqueue_style(
|
|
'apus-related-posts',
|
|
get_template_directory_uri() . '/assets/css/related-posts.css',
|
|
array('apus-bootstrap'),
|
|
APUS_VERSION,
|
|
'all'
|
|
);
|
|
}
|
|
}
|
|
|
|
add_action('wp_enqueue_scripts', 'apus_enqueue_fase2_styles', 6);
|
|
|
|
/**
|
|
* 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);
|