Como ya sabrás a estas alturas siempre he sido (y soy) muy crítico con el hecho de que el editor de bloques Gutenberg tomase por asalto el editor de entradas y páginas de WordPress, casi a la misma altura de mi defensa de que WordPress siempre ha necesitado una herramienta de diseño, un maquetador, para no tener que recurrir – obligatoriamente – a herramientas externas (léase Divi o Elementor).
En mi humilde – pero casi siempre acertada – opinión, Gutenberg debería haberse planteado ÚNICAMENTE como herramienta para la edición completa del sitio, para el conocido como FSE, pero no, eso vino mucho después, tras habernos llenado a los redactores de contenido el editor de bloques y cosas totalmente innecesarias e incluso molestas, que solo tienen sentido en un entorno de diseño, no de redacción.
Por este motivo, también sabrás que he compartido varios trucos y guías de cómo quitar todo o parte del sistema de bloques del editor de WordPress, e incluso tengo un plugin que elimina todo rastro de Gutenberg, estilos y scripts incluidos. Aquí tienes unos ejemplos:
- Cómo desactivar bloques de WordPress que no uses
- Cómo quitar bloques por defecto del editor Gutenberg
- Cómo quitar bloques del editor según el tipo de contenido o perfil de usuario
Ahora bien, como apuntaba hace poco Troy Chaplin, cuando quitas bloques del editor usando ese maravilloso filtro llamado allowed_block_types_all, y precisamente por esa integración profunda que nunca debió existir, también te cargas la edición del sitio, impidiendo o directamente destrozando cualquier diseño usando esta herramienta de maquetación y diseño.
Por ello, el planteamiento que propone es que si queremos quitar bloques del editor se haga de manera que no se eliminen también del editor del sitio, permitiendo así lo mejor de ambos mundos:
- Un editor de contenidos con los bloques justos para un entorno de redacción.
- Un editor del sitio con todos los bloques necesarios para poder maquetar la web con las herramientas que necesita un diseñador.
Código para quitar bloques en entradas y páginas pero no en el editor del sitio
add_filter( 'allowed_block_types_all', 'allowed_blocks', 10, 2 );
function allowed_blocks( $allowed, $context ) {
// El editor del sitio suele modificar estos tipos de contenido
if ( isset( $context->post ) && $context->post ) {
$post_type = $context->post->post_type;
// Permitimos todos los bloques en el editor del sitio
if ( in_array( $post_type, array( 'wp_template', 'wp_template_part' ), true ) ) {
return true;
}
// Solo permitimos algunos bloques en el editor de entradas y páginas
if ( in_array( $post_type, array( 'post', 'page' ), true ) ) {
return array(
'core/paragraph',
'core/heading',
'core/image',
'core/gallery',
'core/list',
'core/shortcode',
'core/table',
'core/preformatted',
'core/code',
'core/embed',
);
}
}
// Por si acaso: detectamos la pantalla del editor del sitio
if ( function_exists( 'get_current_screen' ) ) {
$screen = get_current_screen();
if ( $screen && 'site-editor' === $screen->id ) {
return true;
}
}
// Otro porsiaca: hay contextos que usan nombres como 'core/edit-site'.
if ( isset( $context->name ) && 'core/edit-site' === $context->name ) {
return true;
}
return $allowed;
}
¿Qué hace este código?
- Si está activo el editor del sitio estarán disponibles todos los bloques Gutenberg
- Si está activo el editor de entradas o páginas solo estarán disponibles los bloques del
array.
Así todos contentos ¿no?
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!






