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.
Muchas gracias! El truco me ha sido muy útil en la web para un cliente. Muy agradecido. 🙂
Que bueno!. Saludos.