Si los botones, pestañas o ventanas emergentes de WordPress dejan de funcionar, un error JavaScript es una posible causa, no un diagnóstico por sí solo. Distingue entre un elemento ausente, un botón tapado, un script que no se carga y un manejador que lanza una excepción. Un aviso de consola ajeno al control averiado no demuestra el origen del fallo.
Si el resultado cambia entre navegadores, utiliza la guía para WordPress que funciona en un navegador y falla en otro para comparar perfiles, archivos recibidos y la misma interacción antes de encargar una corrección.
Si el problema bloquea consultas, reservas o compras, solicita una evaluación de la interacción que falla. Envía la URL, la acción concreta y el último cambio anterior al problema.
Reproduce un único control
Anota URL, ancho, consentimiento, sesión, interacción exacta y resultado esperado. Repite en un navegador limpio sin extensiones.
Captura:
primera excepción de Consola
archivo, línea y pila
peticiones fallidas en Red
versión y caché del script
ID o clase del objetivo HTML
si el evento llega a ejecutarse
Oculta datos privados, cookies y tokens.
Empieza por la primera excepción
Recarga con Consola abierta e interactúa una vez. Los errores posteriores pueden ser simples consecuencias de una dependencia no definida.
Abre el archivo desde su URL cargada y confirma que contiene JavaScript, no una página HTML de error servida con un tipo incorrecto. Usa source maps en staging si existen, sin publicar código propietario contra la política del proyecto.
Comprueba dependencias y orden
Declara las dependencias que utiliza realmente tu script. Este ejemplo presupone que ui.js usa jQuery; si no lo necesita, no añadas esa dependencia solo para copiar el ejemplo.
wp_enqueue_script(
'site-ui',
get_stylesheet_directory_uri() . '/assets/ui.js',
array( 'jquery' ),
'1.2.0',
true
);
Evita copias duplicadas de jQuery. defer, módulos y carga en el pie pueden cambiar el orden; inspecciona los atributos reales de la página.
Inspecciona el objetivo en el DOM
Una actualización de tema o bloques puede renombrar clases o generar IDs duplicados. Confirma que el selector coincide y que el código admite varias instancias.
Para contenido insertado dinámicamente, usa delegación de eventos cuando corresponda. No registres manejadores repetidos en cada actualización AJAX. Comprueba a la vez clic, teclado y estado ARIA.
Aísla la optimización
Los plugins de minificación, combinación o retraso pueden alterar el orden o conservar un bundle antiguo. Desactiva una sola función en staging y compara.
Excluye únicamente el script o dependencia incompatibles que hayas demostrado, regenera recursos y versiona el lanzamiento. El consentimiento debe retrasar analítica opcional, no los controles esenciales.
Revisa CSP, CORS y contenido mixto
Content Security Policy, CORS o una mezcla de HTTP y HTTPS pueden bloquear bibliotecas y API. Lee el mensaje exacto del navegador.
Ajusta CSP de forma limitada para los orígenes, nonces o hashes necesarios. No añadas comodines ni unsafe-inline como reparación rápida. Prioriza dependencias locales mantenidas cuando sea viable.
Repara el comportamiento defensivo
Corrige el componente, la dependencia, el selector o la comprobación nula en la fuente:
const trigger = document.querySelector("[data-dialog-trigger]");
if (trigger) {
trigger.addEventListener("click", openDialog);
}
Es un fragmento ilustrativo: openDialog debe ser una función definida en tu implementación. La comprobación evita romper páginas sin ese componente, pero no corrige el HTML ausente donde el botón sí es obligatorio.
Contén los scripts de terceros
Chat, mapas, consentimiento y analítica pueden fallar sin inutilizar la interfaz principal. Carga integraciones opcionales de forma asíncrona y fuera de la ruta de inicialización crítica.
Añade timeouts y alternativas para API externas. No encadenes la preparación del menú o modal a una promesa de marketing. No ocultes globalmente todos los errores: registra una huella segura del fallo y su origen.
Instrumenta los eventos en staging
Usa los paneles de listeners, breakpoints e instrumentación temporal para saber qué manejador se ejecuta, llama a preventDefault() o detiene la propagación.
Retira el diagnóstico antes de publicar. Si dos plugins controlan el mismo disparador, define propiedad y namespaces. En contenido AJAX, inicializa una vez cada componente y limpia al retirarlo.
Verifica todos los estados
Prueba ratón, toque, teclado, varios controles, apertura, cierre, navegación atrás y contenido dinámico en navegadores representativos. Repite con la caché caliente.
Supervisa las huellas de errores del frontal tras desplegar. Que el botón esté visible no demuestra que su interacción funcione.
Prepara evidencias para una reparación concreta
Compara la misma acción sin iniciar sesión y en móvil. Anota el primer error relevante, la URL del script y el resultado esperado. Por ejemplo, si una ventana se abre y se cierra inmediatamente, comprueba si hay dos manejadores antes de añadir un tercero. Es un ejemplo de diagnóstico, no una conclusión sobre tu web.
Comparte errores sin datos privados, nunca contraseñas ni exportaciones de sesiones del navegador. El proceso de reparación explica la evaluación y la aprobación. Pide una evaluación si no puedes aislar el fallo con seguridad.
Documentación de referencia
Consulta la documentación de la consola de Chrome DevTools, la referencia de eventos de MDN y las dependencias de scripts en WordPress para comprobar el mecanismo que investigas.