Si quieres mantener aún el editor clásico, para algunas entradas, para algunas categorías o para algunos custom post types, puedes deshabilitar el editor de Gutenberg selectivamente en WordPress a través de código.
Generalidades
A partir de WordPress 5.0, Gutenberg viene habilitado por defecto, puedes usar algún plugin para deshabilitar Gutenberg, hay muchos de ellos con varias opciones, por ejemplo: Disable Gutenberg, sin embargo en este artículo veremos cómo deshabilitar Gutenberg directamente a través de código.
Deshabilitar totalmente Gutenberg
Técnicamente podrías sólo agregar alguno de los siguientes hooks, uno deshabilita a nivel de entradas individuales y otro deshabilita a nivel de custom post type.
// deshabilitar para posts individuales
add_filter('use_block_editor_for_post', '__return_false', 10);
// deshabilitar a nivel de custom post type
add_filter('use_block_editor_for_post_type', '__return_false', 10);
Habilitar Gutenberg para entradas nuevas
Es posible que quieras conservar las entradas anteriores de tu sitio con el editor clásico y sólo las nuevas entradas que se creen se hagan con el nuevo editor, en esta caso nos basaremos en el hook use_block_editor_for_post, tal como se muestra en el siguiente código
add_filter('use_block_editor_for_post', '__return_false', 5);
function dcms_enable_gutenberg_select_post($can_edit, $post) {
if (empty($post->ID)) return $can_edit;
if ( $post->ID > 123) return true;
return $can_edit;
}
add_filter('use_block_editor_for_post', 'dcms_enable_gutenberg_select_post', 10, 2);
En el código anterior:
- Primero deshabilitamos el editor para todas las entradas, sin embargo consideramos una prioridad de 5
- Agregamos el hook use_block_editor_for_post con una prioridad mayor
- Dentro de la función habilitamos el editor sólo a partir de determinadas entradas, en el ejemplo a partir del ID > 123, retornando true
- La variable de can_edit es devuelta en caso el usuario tenga permisos para editar o no
Habilitar Gutenberg para una categoría específica
En este caso, es posible que sólo quieras habilitar Gutenberg para una o más categorías específicas, nuevamente usaremos una estructura parecida a la anterior usando el hook use_block_editor_for_post, tal como se muestra en el siguiente código
add_filter('use_block_editor_for_post', '__return_false', 5);
function dcms_enable_gutenberg_select_category($can_edit, $post) {
if (empty($post->ID)) return $can_edit;
if (has_category(2)) return true;
return $can_edit;
}
add_filter('use_block_editor_for_post', 'dcms_enable_gutenberg_select_category', 10, 2);
En el código anterior:
- Primero deshabilitamos el editor para todas las entradas, considerando una prioridad baja
- Agregamos el hook use_block_editor_for_post con una prioridad mayor
- En la función habilitamos el editor para la categoría 2, usamos la función has_category, y retornamos true
- La variable de can_edit es devuelta en caso el usuario tenga permisos para editar o no
Habilitar Gutenberg sólo para algunos CPT
En este caso usaremos el hook use_block_editor_for_post_type, lo usaremos para habilitar Gutenberg sólo en determinados Custom Post Types, tal como se muestra en el siguiente código.
add_filter('use_block_editor_for_post_type', '__return_false', 5);
function dcms_enable_gutenberg_cpt($is_enabled, $post_type) {
if ($post_type === 'recetas_post_type') return true;
return $is_enabled;
}
add_filter('use_block_editor_for_post_type', 'dcms_enable_gutenberg_cpt', 10, 2);
En el código anterior:
- Primero deshabilitamos el editor para todos los CPT, considerando una prioridad baja
- Agregamos el hook use_block_editor_for_post_type con una prioridad mayor
- En la función habilitamos el editor para el custom post type llamado recetas_post_type, y retornamos true
- La variable de is_enabled es devuelta en caso el CPT este habilitado o no
Conclusión
Tal como hemos visto se puede deshabilitar Gutenberg usando simplemente los hooks use_block_editor_for_post y use_block_editor_for_post_type a través de código y evitar el uso de un plugin adicional. Dentro de las funciones a las que hacen referencia los hooks podemos poner condicionales para Habilitar/Deshabilitar el editor Gutenberg.
¿Aún con dudas?, en el siguiente video se detallan los puntos anteriores
Muchas gracias! El truco me ha sido muy útil en la web para un cliente. Muy agradecido. 🙂
Que bueno!. Saludos.