WordPress Directo
  • Tutoriales
  • Plugins
  • Plantillas
  • Optimización
  • SEO
  • WordPress Hosting
No Result
View All Result
WordPress Directo
  • Tutoriales
  • Plugins
  • Plantillas
  • Optimización
  • SEO
  • WordPress Hosting
No Result
View All Result
WordPress Directo
No Result
View All Result

Cómo desactivar y bloquear bloques de Gutenberg en WordPress sin plugins

David Carrero Fernández-Baillo by David Carrero Fernández-Baillo
25 abril 2025
in Optimización, Noticias
Reading Time: 6 mins read
0

Restringe el uso de bloques, mejora la experiencia de edición y preserva la integridad del diseño directamente desde el código.

Gutenberg, el editor por bloques nativo de WordPress, ha revolucionado la creación de contenidos. Sin embargo, en muchos casos es necesario limitar qué bloques están disponibles, ya sea para simplificar el entorno de edición, evitar errores en diseños personalizados o restringir el acceso a funcionalidades avanzadas.

Esta guía explora métodos efectivos para desactivar bloques de Gutenberg y bloquear su edición o eliminación, utilizando tanto la interfaz nativa de WordPress como filtros PHP avanzados. No se requieren plugins, lo que garantiza un enfoque limpio, ligero y totalmente compatible con temas basados en bloques.

Artículos relacionados

Cinco formas de acelerar el panel de administración de WordPress y mejorar su rendimiento

28 marzo 2025

Optimización en bases de datos de WordPress: Aumentando el rendimiento 🚀

29 septiembre 2023

¿Qué novedades trae la nueva versión de WordPress 5.0.1?

13 diciembre 2018

Conflicto en WordPress: Matt Mullenweg desactiva cuentas de contribuyentes clave ante tensiones por una posible bifurcación

8 febrero 2025

🧩 Desactivar bloques desde la interfaz de usuario

Desde el propio editor de bloques, cualquier usuario puede eliminar bloques innecesarios del insertador:

  1. Abre el editor de entradas o páginas.
  2. Haz clic en los tres puntos (⋮) de la esquina superior derecha.
  3. Selecciona Preferencias > Bloques.
  4. Desactiva manualmente los bloques que no necesitas.

También es posible desmarcar categorías completas, como “Texto”, “Medios” o “Widgets”, reduciendo drásticamente el número de bloques disponibles.

⚠️ Este método es local y por usuario, y no impide que otros roles accedan a los bloques desactivados.


💻 Desactivar bloques con PHP

El enfoque más robusto y escalable es mediante filtros PHP, que permiten definir bloques permitidos o bloques denegados en función del tipo de contenido, el rol del usuario o incluso el ID del post.

✅ Permitir solo determinados bloques globalmente

add_filter('allowed_block_types_all', 'permitir_bloques_basicos', 10, 2);

function permitir_bloques_basicos($allowed_blocks, $context) {
    return [
        'core/paragraph',
        'core/heading',
        'core/image',
        'core/cover',
        'core/list',
        'core/list-item',
    ];
}

🔐 Limitar bloques a ciertos roles (por ejemplo, editores y superiores)

add_filter('allowed_block_types_all', 'bloques_por_rol', 10, 2);

function bloques_por_rol($allowed_blocks, $context) {
    if (!current_user_can('publish_pages')) {
        return [
            'core/paragraph',
            'core/heading',
            'core/image',
        ];
    }
    return $allowed_blocks;
}

🎯 Activar bloques según el tipo de contenido

add_filter('allowed_block_types_all', 'bloques_por_tipo', 10, 2);

function bloques_por_tipo($allowed_blocks, $context) {
    if (!empty($context->post) && $context->post->post_type === 'page') {
        return [
            'core/paragraph',
            'core/heading',
            'core/image',
            'core/shortcode',
        ];
    }
    return [
        'core/paragraph',
        'core/heading',
        'core/image',
    ];
}

🆔 Permitir bloques por ID de entrada

add_filter('allowed_block_types_all', 'bloques_por_id', 10, 2);

function bloques_por_id($allowed_blocks, $context) {
    if (!empty($context->post)) {
        $id = $context->post->ID;
        $permisos = [
            10 => ['core/paragraph', 'core/image'],
            25 => ['core/paragraph', 'core/heading'],
        ];
        return $permisos[$id] ?? $allowed_blocks;
    }
    return $allowed_blocks;
}

❌ Denegar bloques específicos (lista negativa)

En lugar de definir qué se permite, también se puede excluir solo lo que se quiere bloquear:

add_filter('allowed_block_types_all', 'denegar_bloques', 10, 2);

function denegar_bloques($allowed_blocks, $context) {
    $todos = WP_Block_Type_Registry::get_instance()->get_all_registered();
    unset($todos['core/heading']);
    unset($todos['core/cover']);
    return array_keys($todos);
}

🗃️ Eliminar categorías completas de bloques

add_filter('allowed_block_types_all', 'eliminar_categorias_bloques', 10, 2);

function eliminar_categorias_bloques($allowed_blocks, $context) {
    $categorias_a_ocultar = ['widgets', 'embed', 'theme'];
    $registrados = WP_Block_Type_Registry::get_instance()->get_all_registered();
    $permitidos = [];

    foreach ($registrados as $nombre => $bloque) {
        if (!isset($bloque->category) || !in_array($bloque->category, $categorias_a_ocultar, true)) {
            $permitidos[] = $nombre;
        }
    }
    return $permitidos;
}

🔒 Bloquear bloques en el editor

La función de “bloqueo” permite impedir que ciertos bloques se muevan o se eliminen desde la interfaz gráfica, aunque no impide su edición.

Cómo bloquear bloques manualmente

  1. Selecciona el bloque.
  2. Haz clic en (⋮) > Bloquear.
  3. Activa “Impedir movimiento” o “Impedir eliminación”.

Para bloques con hijos, también se puede bloquear toda la estructura, ideal para diseños reutilizables.

⚠️ Cualquier usuario puede desbloquearlos manualmente… a menos que se use código para evitarlo.


🧩 Bloquear o restringir el desbloqueo de bloques con PHP

🔐 Desactivar completamente la funcionalidad de bloqueo

add_filter('block_editor_settings_all', 'desactivar_bloqueo_total', 10, 2);

function desactivar_bloqueo_total($settings, $context) {
    $settings['canLockBlocks'] = false;
    return $settings;
}

Esto elimina toda la funcionalidad de bloqueo/desbloqueo del editor.


👤 Permitir bloqueo solo a administradores o editores

add_filter('block_editor_settings_all', 'bloqueo_por_rol', 10, 2);

function bloqueo_por_rol($settings, $context) {
    if (!current_user_can('edit_theme_options')) {
        $settings['canLockBlocks'] = false;
        $settings['codeEditingEnabled'] = false;
    }
    return $settings;
}

Este enfoque garantiza que usuarios sin permisos avanzados no puedan desbloquear ni editar en HTML los bloques protegidos.


🧠 Consideraciones finales

  • El uso estratégico del bloqueo y desactivación de bloques mejora la experiencia editorial, protege el diseño y reduce errores.
  • La implementación mediante código permite un control total y centralizado.
  • Estas técnicas pueden combinarse con theme.json para definir estilos, estructuras y restricciones aún más potentes.

Ventajas clave del enfoque sin plugins:

  • Ligereza y rendimiento.
  • Mejor compatibilidad con temas personalizados.
  • Mayor seguridad y control granular.
Tags: bloqueseditorGutenberg
ShareTweetSendSharePin
David Carrero Fernández-Baillo

David Carrero Fernández-Baillo

Experimentando con un sitio web sobre WordPress, este popular gestor de contenidos, entre otros muchos proyectos.

Te puede interesar...

Noticias

Cómo arreglar el error 504 Gateway Timeout en WordPress (11 soluciones probadas)

15 octubre 2025

El 504 Gateway Timeout es uno de esos errores que duelen porque no suele...

Noticias

Hackers explotan webs WordPress para impulsar campañas “ClickFix” de nueva generación: inyecciones JS, suplantaciones de Cloudflare y un giro inquietante con “cache smuggling”

9 octubre 2025

Investigadores de Sucuri, Palo Alto Networks Unit 42 y Expel han destapado una oleada...

Optimización

WebP vs AVIF en 2025: qué formato elegir, cuándo y por qué (con ejemplos reales y guías de implementación)

22 septiembre 2025

Resumen ejecutivo: en 2025, AVIF ofrece mejor compresión y calidad visual que WebP en...

Plugins

WPO Tweaks 2.1: el “todo en uno” gratuito que acelera WordPress con un clic

19 septiembre 2025

WPO Tweaks acaba de dar un salto importante con su versión 2.1.x y se...

No Result
View All Result
Plugin Imagify, optimizar imágenes
wordpress hosting NVME
Elegant Themes WordPress
elementor editor plugin




Últimos artículos

Cómo añadir estilos personalizados en el editor de WordPress

27 enero 2018

Cómo suscribirte a un autor concreto en WordPress

30 mayo 2019

Las mejores plantillas de WordPress para un estudio de arquitectura

29 junio 2017

Las mejores plantillas de WordPress para la landing de una app

13 abril 2017

Introducción a InfiniteWP. La solución para gestionar muchos WordPress

14 mayo 2012
WordPress Directo

WPDirecto.com es una revista especializada en WordPress y WooCommerce que ofrece una amplia gama de recursos, incluyendo tutoriales, análisis de plugins y plantillas, consejos de optimización y estrategias de SEO, para ayudar a los usuarios a mejorar y personalizar sus sitios web, manteniéndolos informados sobre las últimas novedades y tendencias en el mundo de WordPress.

Menu

  • Tutoriales
  • Plugins
  • Plantillas
  • Optimización
  • SEO
  • WordPress Hosting

Información

WPDirecto es un medio de Medios y Redes:
  • Artículos patrocinados
  • Servicio de diseño web
  • Contacto
  • Acerca de MyR
  • Política de privacidad y cookies
  • Aviso Legal

© 1995-2025 Color Vivo Internet, SLU (Medios y Redes Online).. Otros contenidos se cita fuente. Infraestructura cloud servidores dedicados de Stackscale.

No Result
View All Result
  • Tutoriales
  • Plugins
  • Plantillas
  • Optimización
  • SEO
  • WordPress Hosting

© 1995-2025 Color Vivo Internet, SLU (Medios y Redes Online).. Otros contenidos se cita fuente. Infraestructura cloud servidores dedicados de Stackscale.