WordPress Hosting

ninos jugando con bloques

Cómo limitar bloques en el editor de entradas pero que sigan disponibles para el editor del sitio

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:

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?

  1. Si está activo el editor del sitio estarán disponibles todos los bloques Gutenberg
  2. Si está activo el editor de entradas o páginas solo estarán disponibles los bloques del array.

Así todos contentos ¿no?

Compartir en redes
Resumir con IA

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en las estrellas para valorarlo!

Promedio de puntuación 5 / 5. Total de votos: 3

¡Todavía no hay votos! Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en las redes sociales!

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!



Sobre el autor

Scroll al inicio