Últimamente he estado probando varios plugins del repositorio que prometen controlar la visibilidad de bloques según el tipo de usuario. Algunos están bien, pero muchos traen demasiado código, opciones innecesarias o dependencias externas para una funcionalidad que, en realidad, es muy simple.
Así que decidí hacer mi propio plugin: Fran Salas Hide Blocks. Un plugin personal, creado para mis propios proyectos, con una sola función clara: poder decidir si un bloque de Gutenberg se muestra a todo el mundo, solo a usuarios registrados o solo a los invitados.
Y nada más.

¿Qué bloques permite controlar?
Este plugin se integra perfectamente con los bloques nativos de WordPress, como:
- Párrafos
- Imágenes
- Listas
- Citas
- Encabezados
- Botones
- Columnas
- Tablas
- Grupo
- Contenedor (bloques envolventes)
Cuando seleccionas uno de estos bloques, verás en el panel lateral derecho una opción llamada «Visibilidad para usuarios», donde puedes elegir:
- Mostrar este bloque a todos
- Solo a usuarios logueados
- Solo a invitados

La visibilidad se gestiona desde el atributo del bloque y, al renderizar, se filtra automáticamente sin necesidad de ocultarlo por CSS ni cargar código extra.
¿Con qué bloques y plugins funciona?
Funciona perfectamente con:
- Todos los bloques estándar de Gutenberg
- Los bloques que permiten atributos personalizados (la mayoría de los básicos)
No funciona con:
- Algunos bloques de plugins avanzados como Stackable, Spectra, Kadence Blocks o similares, que bloquean la extensión de atributos internos o renderizan su contenido de forma diferente.
- Bloques con contenido dinámico en base a hooks internos o shortcodes que no se procesan como bloques normales.
Pero si usas Gutenberg tal como viene en WordPress (o con editores ligeros), va perfecto.
¿Requiere mantenimiento o actualizaciones frecuentes?
No. Y eso es parte de lo que más me gusta.
El plugin utiliza únicamente funciones nativas y estables de WordPress y Gutenberg:
- En el editor, aprovecha los filtros estándar de bloques (
editor.BlockEdit,blocks.registerBlockType) - En el renderizado, usa el filtro
render_block, que es parte del núcleo de WordPress
No depende de librerías externas, ni de shortcodes, ni de APIs propensas a romperse. Está escrito con código limpio, en JavaScript plano (sin JSX ni herramientas de compilación), y funciona directamente en cualquier instalación moderna de WordPress.
Además, como lo uso personalmente en varios proyectos, si en algún momento veo que necesita ajustes o mejoras, lo actualizaré sin problema. Pero en principio, el plugin está creado con la intención de que funcione sin necesidad de mantenimiento constante, mientras WordPress mantenga la estructura actual de bloques.
Estructura mínima del plugin
El plugin tiene solo dos archivos:
fran-salas-hide-blocks.php
Es el archivo principal. Se encarga de encolar el JS para el editor y de ocultar el bloque en el renderizado según el usuario que visita la web.block-visibility.js
Es el script que modifica el editor de bloques para añadir el selector de visibilidad en el panel derecho. Ya viene compilado (sin JSX) para evitar dependencias de build y que funcione directamente.
Y eso es todo. Sin panel de ajustes, sin opciones globales, sin assets innecesarios.
¿Y si quiero ampliarlo?
Estoy pensando en añadir soporte por roles de usuario (mostrar un bloque solo a administradores, editores, suscriptores…), pero sin perder la filosofía del plugin: mantenerlo lo más ligero posible.
Descarga e instalación
El plugin no está en el repositorio pero puedes descargarlo directamente desde la zona de descargas si eres suscriptor premium.
Una vez instalado, simplemente actívalo y edita cualquier entrada o página con Gutenberg. Al seleccionar un bloque compatible, verás el nuevo control en la barra lateral derecha.
Conclusión
A veces no hace falta complicarse. Si lo único que quieres es controlar si un párrafo, una imagen o cualquier bloque se muestra a usuarios registrados o no, este plugin hace justo eso. Sin ruido. Sin peso. Sin cosas de más.
Lo uso ya en varios de mis proyectos y lo dejo por aquí por si a alguien más le resulta útil.
Todos los plugins creados por mí han sido desarrollados pensando en la ligereza, la optimización y la independencia de recursos externos. Solo utilizan librerías externas en caso de ser absolutamente necesario, y están diseñados para funcionar sin necesidad de actualizaciones frecuentes. Si en algún momento necesitan mejoras o compatibilidad, subiré una nueva versión a la zona de descargas premium.




¿Tienes alguna duda o sugerencia? Déjala en los comentarios.