Tiempo de lectura: 3 min
Last updated: octubre 8, 2026
Valencia, 09/10/2026, G.B.
En Indaga.net me gusta ir trasteando con mis webs, mejorar la experiencia de usuario y, de paso, aprender cosas nuevas. Hace poco me encontré con un pequeño contratiempo: el plugin Tabs Responsive (que llevaba usando desde 2019 en puntocomunica.com para organizar la sección de Lecturas) fue retirado del repositorio de WordPress y Wordfence me avisó de que tenía un fallo de seguridad importante.
En lugar de ponerme a buscar otro plugin de terceros que acabara pesando demasiado o haciendo más de la cuenta, me pareció buena idea montarme una alternativa rápida, ligera y sin complicaciones: así nació Indaga Tabs.
Lo que iba a ser un apaño sencillo de un par de tardes me sirvió para repasar unas cuantas lecciones sobre cómo maneja WordPress los datos, la ejecución de scripts y algún que otro tropiezo por el camino.
Aquí te cuento de forma resumida cómo fue el proceso y las piedras con las que me fui topando hasta llegar a la versión 2.3.0.
Table of Contents
El primer cambio: necesitaba usarlo en más de un sitio
Al principio programé el plugin para gestionar una sola lista de pestañas. Sin embargo, pensé que si quería usarlo también en otras secciones o webs (por ejemplo, en servicios o en la barra lateral), me venía mejor poder crear varios grupos independientes.
Así que le añadí soporte para múltiples instancias usando parámetros sencillos en el shortcode (como o ).
Ahí fue donde la cosa se puso interesante y empezaron los pequeños quebraderos de cabeza.
Los tropezones del camino (y cómo los apañé)
1. Duplicar scripts sin querer en JavaScript
- El problema: Para que cada bloque funcionara de forma independiente, al principio metí el script de JS dentro del propio shortcode. En cuanto ponía dos grupos de pestañas en la misma página, el script se imprimía dos veces y se montaba un lío en el navegador al intentar definir la misma función.
- La solución: Saqué el código de ahí y lo llevé al pie de página (
wp_footer). Ahora el script se carga una sola vez al final y se encarga de hacer funcionar cualquier grupo de pestañas que encuentre en la pantalla mediante delegación de eventos nativa.
2. El típico pantallazo blanco de PHP
- El problema: Al cambiar la forma de guardar los datos en la base de datos (pasando de una lista simple a una estructura con varias instancias), si el código intentaba leer datos antiguos que no tenían la nueva forma, PHP protestaba y saltaba el temido mensaje de «Ha habido un error crítico en tu web».
- La solución: Reescribí la lectura de datos con
get_option()de forma mucho más precavida. Ahora el plugin comprueba primero que todo sea un grupo válido (is_array()) antes de tocar nada y convierte los datos viejos a la nueva estructura automáticamente sin romper la web.
Ficha Técnica para el Control de Plugins (Estilo Indaga.net)
Gestor de contenido dinámico por pestañas interactivas con soporte para múltiples instancias, selector y administración de grupos desde el panel de control de WordPress.
Acceso: Indaga Tabs (wp-admin/admin.php?page=indaga-tabs)
Alias / Shortcodes:
,Contenido inicial de la primera pestaña.Contenido de la segunda pestaña.(admite parámetroContenido inicial de la primera pestaña.Contenido de la segunda pestaña.id="instancia", ej.)Dependencias: Ninguna (100% nativo con API de WordPress, JavaScript Vanilla y CSS dinámico).
Seguridad: Sanitización completa con
sanitize_text_field()ywp_kses_post(), escapado riguroso en salidas (esc_html,esc_attr), verificación de Nonces anti-CSRF (wp_nonce_field,check_admin_referer) y control de acceso por perfil mediantemanage_options.

