X

Deshabilitar Gutenberg en WordPress selectivamente

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.

El código que veremos a continuación puedes agregarlo en el archivo functions.php de tu child-theme

 

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.

 

Categorías: Core
Etiquetas: editor

Ver comentarios (2)