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>
Implementación completa de navbar sticky con menú hamburguesa responsive según especificaciones del template del cliente:
**Archivos Modificados:**
- header.php: Reescritura completa con navbar Bootstrap 5, sticky positioning, y responsive hamburger menu
- functions.php: Agregado require para nav-walker.php
- inc/enqueue-scripts.php: Agregado enqueue de custom-style.css y main.js
**Archivos Creados:**
- assets/css/custom-style.css: Estilos navbar con animaciones (gradient underline, dropdown slideDown, etc.)
- assets/js/main.js: JavaScript para scroll effect, active menu highlight, y mobile auto-close
- inc/nav-walker.php: Bootstrap 5 Nav Walker para dropdowns WordPress
**Características:**
✅ Navbar sticky con transición de sombra al hacer scroll
✅ Gradient underline animation en hover de nav-links
✅ Dropdown menus con animación slideDown
✅ Menú hamburguesa responsive (< 991px)
✅ Auto-close mobile menu al hacer click en enlaces
✅ Active menu item highlighting
✅ Smooth scroll para anchor links
✅ Skip link para accesibilidad
✅ Compatible con WordPress menu system
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Cambios realizados:
- Actualizado assets/css/fonts.css con stack de system fonts del template
- System fonts por defecto (máximo rendimiento, 0 KB descargados)
- Poppins opcional (comentado, para activar desde Customizer)
- Variables CSS actualizadas (--font-system, --font-primary, --font-headings)
- Utilidades de fuentes (font-weight, font-size, line-height)
- Responsive font sizes para móvil, tablet y desktop
- Font smoothing para mejor renderizado
Stack de system fonts:
-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif
Beneficios:
✅ 0 HTTP requests
✅ 0 KB descargados
✅ Mejor LCP y Core Web Vitals
✅ Sin FOIT/FOUT
Customizer ya configurado en inc/customizer-fonts.php para activar
Poppins opcional si el usuario lo requiere.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Eliminar archivos .md que faltaban en el commit anterior
- Actualizar referencias en single.php e index.php
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Cambios realizados:
- Eliminados 14 archivos de documentación .md innecesarios (root + docs/)
- Instalado Bootstrap 5.3.2 local en assets/vendor/bootstrap/
- Actualizado inc/enqueue-scripts.php con rutas correctas a Bootstrap
- Limpieza de estructura para mantener estándar de WordPress
- Sin jQuery (Bootstrap 5 no lo requiere)
Archivos eliminados:
- CHANGELOG.md, CREDITS.md, README.md, etc. (11 archivos)
- docs/01-initial-setup.md, docs/02-theme-options.md, docs/03-performance-seo.md
Bootstrap 5.3.2:
- CSS: assets/vendor/bootstrap/css/bootstrap.min.css
- JS: assets/vendor/bootstrap/js/bootstrap.bundle.min.js
- Versión exacta del template del cliente
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Resuelve issue #21 (parte 3) - Agotamiento de memoria (14GB)
PROBLEMA:
- PHP Fatal error: Allowed memory size of 14680064000 bytes exhausted
- El tema intentaba usar 14 GB de memoria antes de fallar
- Timeout de 15+ segundos antes del crash
- Error en wp-includes/option.php línea 615
CAUSA RAÍZ:
La combinación de apus_add_dns_prefetch() y apus_remove_dns_prefetch()
creaba un loop infinito:
1. apus_add_dns_prefetch() agrega hints en wp_head con prioridad 0
2. apus_remove_dns_prefetch() filtra wp_resource_hints
3. Esto causa que WordPress recalcule hints infinitamente
4. Cada recalculo consume memoria hasta agotar 14GB
SOLUCIÓN:
Deshabilitar temporalmente apus_add_dns_prefetch() comentando el
add_action en línea 448. Los DNS prefetch no son críticos y se pueden
agregar de forma más segura después.
ARCHIVOS MODIFICADOS:
- inc/performance.php (línea 447-448)
VERIFICACIÓN:
✅ Sitio funciona con HTTP 200
✅ Sin agotamiento de memoria
✅ Sin timeouts
✅ Performance.php funcional
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Resuelve issue #21 (parte 2) - HTTP 500 / Timeout
PROBLEMA:
- La función apus_remove_dns_prefetch() causaba un loop infinito
- Usaba wp_dependencies_unique_hosts() de manera incorrecta
- Causaba timeout de 36 segundos y HTTP 500 en staging
- El tema no podía activarse sin causar error
CAUSA RAÍZ:
La función llamaba a wp_dependencies_unique_hosts() dentro del filtro
'wp_resource_hints', lo cual podía disparar más dependencias que volvían
a llamar el mismo filtro, creando un loop infinito.
Código problemático (línea 309):
return array_diff( wp_dependencies_unique_hosts(), $hints );
SOLUCIÓN:
Reescribir la función para filtrar hints directamente sin llamar a
wp_dependencies_unique_hosts(), usando un loop simple para eliminar
solo las referencias a s.w.org.
ARCHIVOS MODIFICADOS:
- inc/performance.php (líneas 307-321)
VERIFICACIÓN EN STAGING:
✅ Sitio funciona con tema APUS activado
✅ No hay timeouts
✅ HTTP 200 en lugar de HTTP 500
✅ Performance.php funciona correctamente
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Se implementa tema WordPress personalizado para Análisis de Precios Unitarios con funcionalidades avanzadas:
- Sistema de templates (front-page, single, archive, page, 404, search)
- Integración de Bootstrap 5.3.8 con estructura modular de assets
- Panel de opciones del tema con Customizer API
- Optimizaciones de rendimiento (Critical CSS, Image Optimization, Performance)
- Funcionalidades SEO y compatibilidad con Rank Math
- Sistema de posts relacionados y tabla de contenidos
- Badge de categorías y manejo de AdSense diferido
- Tipografías Google Fonts configurables
- Documentación completa del tema y guías de uso
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Documentación técnica completa de tareas realizadas
- Verificaciones detalladas de cada requisito
- Estructura de archivos creados
- Beneficios implementados
- Matriz de compatibilidad
- Próximos pasos recomendados
- Testing checklist
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Verificado: add_theme_support('title-tag') está activo en functions.php (línea 30)
- Verificado: header.php está limpio sin meta tags duplicados (solo charset, viewport, X-UA-Compatible)
- Creado: inc/seo.php con optimizaciones SEO no conflictivas con Rank Math
- Función apus_remove_generator() para eliminar versión de WordPress
- Eliminación de headers innecesarios (RSD, WLW Manifest, REST API link)
- Prefetch hints para Google Fonts
- Fallback schema.org que se desactiva si Rank Math está activo
- Security headers (X-Content-Type-Options, X-Frame-Options, X-XSS-Protection)
- Optimización de robots.txt cache headers
- Actualizado: functions.php para incluir inc/seo.php en el flujo de carga
- Creado: SEO-COMPATIBILITY.md con documentación completa
- Explicación de features SEO del tema
- Qué hace Rank Math
- Cómo trabajan juntos sin conflictos
- Configuración recomendada de Rank Math
- Checklist de verificación
- Troubleshooting
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>