Skip to content

Todo para WordPress, el desarrollo web — y mucho más

🔧 WordPress: cómo mostrar un widget con un shortcode en cualquier lugar de tu sitio

🔧 WordPress: cómo mostrar un widget con un shortcode en cualquier lugar de tu sitio

Necesita un formulario de suscripción no en la barra lateral, sino justo en el medio de un artículo. O un widget de catálogo de WooCommerce en una página que no tiene barra lateral alguna. Va al panel de administración, busca un bloque y WordPress le dice: los widgets solo existen en áreas registradas del tema. Punto.

La limitación es arquitectónica: el sistema de widgets está vinculado a sidebar-1, footer-widgets y otras zonas definidas en el tema. El contenido de las entradas es territorio ajeno para él. Puede buscar una solución alternativa, pero no existe una opción estándar de «insertar widget aquí» en el núcleo.

Un shortcode para widgets resuelve el problema con una sola línea. Sin necesidad de crear un área aparte, sin tema hijo, sin editar plantillas. A continuación le mostramos cómo funciona en 2026: un plugin listo para usar, todos los parámetros y una alternativa nativa en PHP para desarrolladores.

💡 Resumen rápido:

  • Instale WP Anywhere Widgets, el plugin genera un shortcode para cualquier widget registrado.
  • Inserte el shortcode en una entrada, página, barra lateral o plantilla PHP del tema.
  • Configure el título, el contenedor HTML y las clases CSS mediante los parámetros del shortcode.
  • Para proyectos sin plugins de terceros, use la función nativa the_widget().

Por qué necesita un shortcode para widgets

WordPress no permite mostrar un widget dentro del contenido de una entrada usando las herramientas estándar. El sistema de widgets funciona solo dentro de las áreas registradas del tema, y todo lo que está fuera de esos límites no existe para él.

En la práctica, la necesidad surge en tres escenarios:

  • Formulario de suscripción en una guía extensa. La barra lateral se desplazó hacia arriba y desapareció de la vista, el lector no ve el formulario. Un shortcode mantiene la llamada a la acción justo en el cuerpo del artículo, frente a sus ojos.

  • Widget de WooCommerce en una página personalizada. La página está construida sin barra lateral, pero los filtros de producto o la búsqueda ([woocommerce_product_search]) deben estar justo ahí.

  • Bloque dinámico de «Entradas relacionadas» en la plantilla single.php. El tema no proporcionó un área antes de los comentarios. Un shortcode llamado desde functions.php coloca el widget en cualquier lugar sin tocar las plantillas.

Anteriormente, el plugin Widget Shortcode se encargaba de esta tarea: una herramienta sencilla que generaba [widget id="text-1"] para cualquier widget registrado. En enero de 2023, se cerró debido a una vulnerabilidad no resuelta. El sucesor directo es WP Anywhere Widgets.

WP Anywhere Widgets: generador de shortcodes para cualquier widget

WP Anywhere Widgets adoptó la misma idea pero fue más allá. No solo proporciona shortcodes para widgets existentes, sino que también le permite crear los suyos propios directamente en el panel de administración, sin vincularlos a una barra lateral. Es compatible tanto con el editor de widgets clásico como con los bloques de Gutenberg.

Página de shortcodes para todos los widgets en WP Anywhere Widgets

La instalación es la estándar: Plugins → Añadir nuevo → busque «WP Anywhere Widgets» → Instalar → Activar. Tras la activación, aparece un elemento Widget Shortcodes en el menú Apariencia: una tabla resumen de todos los widgets creados y sus shortcodes. Un botón «Copiar» junto a cada uno.

El plugin funciona con WordPress 3.3 y superior, probado hasta la versión 6.8.5. A junio de 2026, cuenta con más de 700 instalaciones activas y una calificación de 4.8 sobre 5 en WordPress.org. La última actualización (v4.0) añadió soporte completo para bloques de Gutenberg y una página de administración independiente para gestionar los shortcodes.

🔗 WP Anywhere Widgets en WordPress.org

Cómo generar un shortcode de widget

Cualquier widget registrado en el sistema obtiene un ID único: text-1, calendar-3 o block-7. WP Anywhere Widgets muestra este ID en la interfaz y proporciona de inmediato un shortcode listo para usar:

Generación de shortcodes de widgets en el administrador de WordPress

Sintaxis básica:

1[widget id="text-1"]

Insértelo en cualquier entrada, página o bloque de texto. El plugin sustituirá el HTML completo del widget: título, cuerpo, contenedor con las clases CSS del tema. No se requiere configuración adicional.

Inserción de un shortcode en una entrada y en el editor Gutenberg

En el editor clásico, el shortcode se inserta directamente en el texto, igual que [gallery] o [contact-form-7]:

Insertar un shortcode de widget en el cuerpo de una entrada de WordPress

En el editor de bloques, use el bloque Shortcode. Añada el bloque, pegue [widget id="text-1"] y WordPress renderiza el widget en el editor visual:

Shortcode de widget en el editor de bloques Gutenberg

Si el widget contiene JavaScript (por ejemplo, un mapa o un formulario), no se ejecutará en el editor. Esta es una limitación de seguridad de Gutenberg. En el frontend, todo funciona con normalidad.

Parámetros del shortcode: título, contenedor y clases CSS

El shortcode acepta varios parámetros opcionales que modifican la salida HTML sin una sola línea de código:

Interfaz de configuración de parámetros de shortcodes de widgets

title, sustitución del título. Por defecto, el widget muestra el título establecido en sus ajustes. El parámetro title lo reemplaza sobre la marcha:

1[widget id="text-1" title="New title"]

Para ocultar completamente el título, pase title="0". El widget se renderizará sin un <h2> o <h3> encima del cuerpo.

container_tag, etiqueta HTML del contenedor. Por defecto, el widget se envuelve en un <div>. Sustitúyalo por <section>, <aside> o cualquier otra etiqueta semántica:

1[widget id="text-1" container_tag="aside"]

container_class, clase CSS adicional. Su clase se añade a la clase estándar widget. Útil para aplicar estilos personalizados a una instancia específica:

1[widget id="text-1" container_class="my-custom-widget"]

container_id, atributo HTML id. Por defecto, WordPress genera el ID automáticamente. Este parámetro fija el valor para enlaces de anclaje y segmentación por JavaScript:

1[widget id="text-1" container_id="subscribe-widget"]

title_tag** y title_class, control del título.** Cambie la etiqueta del título de <h2> (predeterminado) a <h3>, <h4>, y añada una clase personalizada:

1[widget id="text-1" title_tag="h3" title_class="widget-title-large"]

Todos los parámetros se pueden combinar en un solo shortcode. El orden no importa, la sintaxis es la estándar: param="value".

Método PHP: la función the_widget() para desarrolladores

Cuando no necesita un plugin, WordPress proporciona la función nativa the_widget(). Esta muestra cualquier widget registrado directamente desde PHP: en un tema, tema hijo o fragmento de Code Snippets.

Llamada básica:

1the_widget( 'WP_Widget_Text', array(
2 'title' => 'Subscription form',
3 'text' => '[mailpoet_form id="1"]',
4 'filter' => true,
5) );

El primer argumento es la clase PHP del widget. El segundo es un array de ajustes que coincide con lo que el widget guarda en wp_options. El tercero es un array de argumentos del contenedor:

1the_widget( 'WP_Widget_Text',
2 array( 'title' => 'Subscribe', 'text' => '[shortcode]' ),
3 array(
4 'before_widget' => '<section class="widget %2$s">',
5 'after_widget' => '</section>',
6 'before_title' => '<h3 class="widget-title">',
7 'after_title' => '</h3>',
8 )
9);

Este enfoque no depende de plugins de terceros y no se romperá con las actualizaciones de WordPress. La desventaja: necesita conocer la clase PHP de cada widget. Clases estándar del núcleo:

  • WP_Widget_Text
  • WP_Widget_Calendar
  • WP_Widget_Search
  • WP_Widget_Categories

Encuentre la clase de un plugin en su código fuente o mediante var_dump( $wp_widget_factory->widgets ).

El código se coloca en functions.php del tema activo (preferiblemente un tema hijo) o mediante el plugin Code Snippets. Antes de editar functions.php, haga una copia de seguridad del archivo: un error de sintaxis PHP tirará abajo todo el sitio.

⁉️🤔 Preguntas frecuentes

¿El shortcode de widget funciona con plugins de caché?

Sí, el shortcode es procesado por el servidor durante la renderización de la página, antes de que el HTML entre en la caché. WP Rocket, W3 Total Cache y LiteSpeed Cache guardan la página ya ensamblada con el widget terminado. Para datos dinámicos (carrito de WooCommerce, tasas de cambio), use bloques ESI para excluir un fragmento específico de la caché. La función the_widget() combinada con DOING_AJAX le da control total sobre qué se almacena en caché y qué no.

¿El widget necesita estar en una barra lateral activa?

No, el widget no necesita estar en una barra lateral activa. Solo necesita estar registrado en WordPress y añadido a cualquier barra lateral, incluida una inactiva (Widgets inactivos). WP Anywhere Widgets crea widgets en su propio registro interno, que no está vinculado en absoluto a las áreas del tema.

¿Cuántos widgets se pueden mostrar mediante shortcode en una sola página?

No hay límites de cantidad. Cada llamada a [widget] o the_widget() crea una instancia independiente. El rendimiento depende solo de la complejidad de los propios widgets: diez bloques de texto o formularios de suscripción se ejecutarán instantáneamente, mientras que diez widgets con solicitudes a API externas añadirán 200-300 ms cada uno. Para widgets con uso intensivo de API, almacene en caché los resultados mediante transients dentro de the_widget().

¿Qué sucede si se elimina el plugin del widget pero su shortcode permanece en las entradas?

Un shortcode sin un manejador activo se muestra como texto plano: los visitantes verán [widget id="text-1"] directamente en la página. Antes de eliminar el plugin de origen, revise todas las entradas mediante la búsqueda del administrador: Herramientas → Better Search Replace, o WP-CLI: wp search-replace '[widget id="text-1"]' '' --dry-run. Después del reemplazo masivo, limpie los párrafos vacíos en la base de datos por separado.

¿Se puede usar un shortcode de widget en un menú de navegación?

Los menús de WordPress no procesan shortcodes por defecto. Para insertar un widget en la navegación, use el filtro wp_nav_menu_items en functions.php con una llamada a do_shortcode('[widget id="..."]'): esto añade el shortcode antes, después o entre elementos específicos del menú. Alternativa: una clase Walker personalizada que analice un marcador {widget} en el nombre del elemento del menú y lo reemplace con un widget activo.

Qué elegir: plugin o código personalizado

En la mayoría de los casos, WP Anywhere Widgets resuelve la tarea por completo. Instálelo, copie el shortcode, péguelo donde lo necesite. Los parámetros son suficientes para personalizar el contenedor sin una sola línea de CSS.

El método PHP mediante the_widget() se justifica en dos situaciones: usted es un desarrollador que busca cero plugins de terceros en el proyecto, o necesita una lógica especial (por ejemplo, diferentes widgets para usuarios registrados frente a invitados). De lo contrario, use el plugin y no complique las cosas innecesariamente.

Si su objetivo es específicamente incrustar un formulario de suscripción en medio de un artículo, considere plugins de correo electrónico con soporte nativo de shortcodes: MailPoet, Newsletter, Brevo. Cada uno proporciona un shortcode [form] listo para usar con control de posicionamiento, mientras que WP Anywhere Widgets sirve como una capa universal para todo lo demás.

Una demostración visual del canal WebTutorials: el ciclo completo desde la instalación del plugin hasta un shortcode funcional en una página, rápido y directo al grano.