Hola, buenas tardes.
Ayer envié un ticket comentando un problema para visualizar unas fuentes en la web que pude corregir.
El caso es que hoy me he encontrado con otro problema que no sé si tiene que ver, con esta corrección o con otro tema de WP Rocket o Magic caché.
El caso es que me he dado cuenta esta mañana que el menú de la web, no se visualiza en desktop ni móvil.
Este menú fue desarrollado a medida desde el functions.php hace unos meses para tratar de evitar la duplicidad de menús al usar el clásico de Wordpress, y tratar de optimizar el SEO al no generar enlaces duplicados a las secciones.
El menú de desktop y móvil se visualizaba hasta ayer, en principio, a través del sigiuente presente en el functions.php del child:
// Shortcode para el menú function responsive_menu_shortcode() { // Establecer cookie sin valor para evitar el cacheo de Varnish setcookie('varnish_nocache', '', 0, '/'); ob_start(); if (!wp_is_mobile()) : ?> <nav class="desktop-menu-wrapper"> <?php wp_nav_menu(array( 'menu' => 'main', 'menu_class' => 'desktop-menu', 'container' => false, 'depth' => 2 )); ?> </nav> <?php endif; if (wp_is_mobile()) : ?> <div class="mobile-menu-container"> <button class="hamburger" aria-label="Abrir menú"> <svg class="hamburger-svg" viewBox="0 0 46 46" width="46" height="46"> <path class="hamburger-line top" d="M6 13h34" /> <path class="hamburger-line middle" d="M6 23h34" /> <path class="hamburger-line bottom" d="M6 33h34" /> </svg> </button> <div class="offcanvas-menu"> <?php wp_nav_menu(array( 'menu' => 'main', 'menu_class' => 'mobile-menu', 'container' => false )); ?> </div> </div> <?php endif; ?> <?php return ob_get_clean(); } add_shortcode('responsive_menu', 'responsive_menu_shortcode'); /* JS Hamburguer */ function load_libs_footer(){ ?> <script class="webMenus"> document.addEventListener('DOMContentLoaded', function() { // Función para gestionar los menús según el tamaño de pantalla function handleMenus() { var desktopMenu = document.querySelector('.desktop-menu-wrapper'); var mobileMenu = document.querySelector('.mobile-menu-container'); if(window.innerWidth < 1025) { if(desktopMenu && desktopMenu.parentNode) { desktopMenu.parentNode.removeChild(desktopMenu); } } else { if(mobileMenu && mobileMenu.parentNode) { mobileMenu.parentNode.removeChild(mobileMenu); } } } // Ejecutar al cargar handleMenus(); // Configuración del menú hamburger const hamburger = document.querySelector('.hamburger'); const offcanvas = document.querySelector('.offcanvas-menu'); if(hamburger && offcanvas) { hamburger.addEventListener('click', function(e) { e.stopPropagation(); this.classList.toggle('active'); offcanvas.classList.toggle('active'); }); // Cerrar al hacer click fuera document.addEventListener('click', function(e) { if(offcanvas.classList.contains('active') && !offcanvas.contains(e.target) && !hamburger.contains(e.target)) { hamburger.classList.remove('active'); offcanvas.classList.remove('active'); } }); // Cerrar al seleccionar item const mobileLinks = document.querySelectorAll('.mobile-menu a'); if(mobileLinks.length > 0) { mobileLinks.forEach(link => { link.addEventListener('click', () => { hamburger.classList.remove('active'); offcanvas.classList.remove('active'); }); }); } } }); </script> <?php } add_action('wp_footer', 'load_libs_footer', 99);
Hace unas semanas actualizamos el theme principal Hello de Elementor, aunque no debería haber tenido ninguna relación al estar este código en él functions del tema Child.
Ayer, aparte de corregir las fuentes, apliqué en el plugin de WP Rocket la opción de "Retrasar la carga de Javascript".
Revisé la página posteriormente y no vi problema en el menú, pero hoy por la mañana me he dado cuenta de que no aparece, y uina de las cosas en que he pesado que pueda estar relacionado es esta opción.
La he desactivado, he vaciado cachés de Magic caché y WP Rocket, pero veo que sigue sin mostrarse.
Como decía ayer, el desarrollador que se encargó de esta tarea ya no está en el equipo, y ahora mismo encuentro qué problema puede estar provocando que no aparezca, si está relacionado con JS o qué, porque el WP Rocket mantiene ahora la misma configuración que cuando se mostraba bien.
Si me podéis dar alguna idea o referencia de que puede estar pasando, teniendo en cuenta de que la función inicial usa una cookie de Varnish, os lo agradecería.
Quedo atento, un saludo y gracias.
Contenido solo visible a usuarios registrados
Hola Alvaro,
Entiendo que de momento el menu que esta hecho a medida y nos citas su código no se esta viendo en este momento en la web
Tambien entiendo que se han realizado cambios recientes ademas del tema relacionado con las fuentes se han procesado actualizaciones generales
Posees una versión antigua o de respaldo del sitio antes de que se ejecutaran dichos cambios? ya que si bien podemos atribuirle la falla a las actualizaciones recientes es complicado en un primer vistazo determinar la causa
Por suerte siempre tienes la opción de restaurar a copias de seguridad pasadas desde Superbackup
Por otro lado esta el como se maneja este fragmento de código personalizado que si bien esta en un tema hijo, otra forma de abordarlo seria por un complemento que administre los fragmentos de código como es el caso de Code snippets
https://es.wordpress.org/plugins/code-snippets/
Podemos contemplar estos escenarios sin profundizar aun en la sintaxis del código personalizado que nos has citado
Saludos!