Si tu blog tiene ya sus años y en un momento determinado te pasaste al editor de Gutenberg dejando todos aquellos post antiguos publicados con el formato del editor clásico, quizá quieras convertirlos ahora a bloques de Gutenberg de una tacada.
Hacer esta migración puede ofrecer algunos beneficios de SEO y rendimiento. Al final de esta entrada están explicados.
Convert to Blocks El único plugin de usar y tirar decente que queda para facilitar esta conversión es Convert To Blocks . Sólo hay que instalarlo. No tiene ningún ajuste ni área de administración, tampoco lo necesita.
Ahora, al abrir la lista de entradas encontrarás a la derecha del título una nueva columna que te indica si la entrada fue publicada usando el editor clásico (Classic Editor) o el de Gutenberg (Block Editor). Eso sí, se echa en falta alguna forma de ordenarlos.
Tampoco es que sea la gran maravilla porque esto mismo se puede hacer con una función que añadirá una columna a la derecha mostrando "Clásico" o "Gutenberg" a cada post. Algo como esto:
// Añadir la columna personalizada en la lista de entradas que muestre si fueron publicadas con el editor Clásico o Gutenberg
function add_editor_type_column($columns) {
$columns['editor_type'] = 'Editor';
return $columns;
}
add_filter('manage_posts_columns', 'add_editor_type_column');
// Mostrar el contenido de la columna personalizada
function display_editor_type_column($column_name, $post_id) {
if ($column_name === 'editor_type') {
$content = get_post_field('post_content', $post_id);
if (strpos($content, '<!-- wp:') !== false) {
echo 'Gutenberg';
} else {
echo 'Clásico';
}
}
}
add_action('manage_posts_custom_column', 'display_editor_type_column', 10, 2);
// Hacer que la columna sea ordenable
function make_editor_type_column_sortable($columns) {
$columns['editor_type'] = 'editor_type';
return $columns;
}
add_filter('manage_edit-post_sortable_columns', 'make_editor_type_column_sortable');
// Modificar la consulta para ordenar por el tipo de editor
function sort_posts_by_editor_type($query) {
if (!is_admin() || !$query->is_main_query()) {
return;
}
if ($query->get('orderby') === 'editor_type') {
$query->set('meta_key', '_editor_type');
$query->set('orderby', 'meta_value');
}
}
add_action('pre_get_posts', 'sort_posts_by_editor_type');
// Guardar el tipo de editor como metadato al guardar el post
function save_editor_type_metadata($post_id) {
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
$content = get_post_field('post_content', $post_id);
$editor_type = (strpos($content, '<!-- wp:') !== false) ? 'gutenberg' : 'classic';
update_post_meta($post_id, '_editor_type', $editor_type);
}
add_action('save_post', 'save_editor_type_metadata');
Lo interesante del plugin es que convierte "al vuelo". Esto quiere decir que si editas cualquier post, automáticamente hará la conversión a Gutenberg al abrir el editor. Si algo sale mal lo podrás ver y salir sin guardar descartando los cambios para editar aquello que sospeches que causó el error en conversión y volver a probar.
Esto está bien para convertir unas decenas de post. Funciona muy bien y convierte con éxito prácticamente la totalidad de los post en los que lo probé. Convert to Blocks advierte de que por defecto no convertirá tus bloques personalizados.
Conversión masiva o por lotes ¿Pero qué pasa si tienes cientos o miles, como era mi caso, de post para convertir? Aquí entra en juego la función más útil del plugin. Permite la conversión en grandes cantidades usando WP-CLI . Si ya sabes como se usa WP-CLI, puedes saltarte este cacho y si no, puedes acudir a este enlace .
En su página de GitHub puedes encontrar la lista de comandos que puedes usar.
NOMBRE
wp convert-to-blocks start
DESCRIPCIÓN
Inicia una nueva Migración. El comando imprime la URL que debe abrirse en un navegador para conectarlo a la CLI de WP.
SYNOPSIS
wp convert-to-blocks start [--post_type=<post_type>] [--per_page=<per_page>] [--page=<page>] [--only=<only>] [--catalog] [--reset]
OPCIONES
[--post_type=<post_type>]
Lista opcional delimitada por comas de los tipos de entrada a migrar. Por defecto post,page
[--per_page=<per_page>]
Número opcional de posts a migrar por lote. Por defecto no hay límite. Combinar con --page para paginar.
[--page=<page>]
Número de página opcional desde el que iniciar la migración. Por defecto es 1.
[--only=<only>]
Lista opcional delimitada por comas de ID de post a migrar.
[--catalog]
Bandera opcional para migrar sólo las entradas etiquetadas del editor clásico. Requiere que el plugin Block Catalog esté presente y haya sido indexado.
[--reset]
Detiene cualquier migración en curso y restablece el estado de la migración.
NOMBRE
wp convert-to-blocks stop
DESCRIPCIÓN
Detiene la migración en curso si está activa.
NOMBRE
wp convert-to-blocks status
DESCRIPCIÓN
Imprime el estado de la migración en curso.
Si tienes un hosting compartido o simplemente no quieres que la velocidad de carga por el uso elevado que la conversión hace de CPU (ten en cuenta que no sólo convierte, también debe guardar/publicar todos los post uno a uno) te aconsejo hacerlo por lotes.
Yo elegí la opción de convertir un número determinado de post añadiendo bloques de unas 100 IDs en cada lote.
Sabemos como ver la ID de un post porque en la edición aparece en la URL, pero ahora necesitamos extraer todos los ID de los post publicados con el editor clásico separados por una coma sin espacios.
También tengo una función para eso.
// Función para obtener los IDs de posts creados con el editor clásico
function obtener_ids_posts_editor_clasico() {
global $wpdb;
// Consulta para obtener los IDs de los posts que NO contienen bloques de Gutenberg
$query = "
SELECT ID
FROM {$wpdb->posts}
WHERE post_content NOT LIKE '%<!-- wp:%'
AND post_status = 'publish'
AND post_type = 'post' -- Solo posts, excluye páginas y otros tipos
AND post_content != '' -- Excluye posts vacíos
AND post_title != '' -- Excluye posts sin título
AND post_name != '' -- Excluye posts sin slug válido
";
$results = $wpdb->get_col($query);
// Convierte el array de IDs en una cadena separada por comas
$ids_comma_separated = implode(',', $results);
return $ids_comma_separated;
}
// Shortcode para mostrar el listado de IDs y el número total de posts con el editor clásico
add_shortcode('listado_ids_clasico', function() {
// Obtener la lista de IDs
$ids_posts_clasico = obtener_ids_posts_editor_clasico();
// Contar el número total de IDs
$total_posts = count(explode(',', $ids_posts_clasico));
// Mostrar el contador y la lista de IDs
return 'Total de posts creados con el editor clásico: ' . $total_posts . '<br>IDs de posts: ' . $ids_posts_clasico;
});
Uso:
1. Copia el código en el archivo functions.php de tu tema o en un plugin personalizado.
2. Inserta el shortcode [listado_ids_clasico] en cualquier página o entrada de WordPress no hace falta que la publiques. Te bastará hacer una vista previa del borrador.
3. El shortcode mostrará el número total de posts creados con el editor clásico y una lista de sus IDs.
- Este código lista solo los posts publicados que no contienen bloques de Gutenberg.
- Excluye páginas, revisiones, posts vacíos, posts sin título y posts sin slug válido.
- Si necesitas incluir otros tipos de contenido (por ejemplo, páginas), cambia `post_type = 'post'` por `post_type IN ('post', 'page')`.
- Si quieres excluir otros tipos de contenido no deseado, agrega más condiciones a la consulta SQL.
Y esto es lo que obtendrás (*en la revisión he añadido que incluya también la cifra de la cantidad total).
Ahora ya puedes seleccionar la cantidad de IDs que quieras e ir convirtiendo por lotes a medida.
Como LucusHost tiene instalado WP-CLI, desde cPanel tengo el terminal listo para darle caña.
Se abre y se conecta con la ruta de la raíz de tu instalación de WP
cd public_html/staging
Enter
Por último tecleamos nuestro comando con las ID´s de los post que vamos a convertir. Ejemplo:
wp convert-to-blocks start --only=3017,3100,3145,3281,3357,4121,4505,4564,4586,4623,4647,4665,4688,4706,4712,4727,4793,16019,50411,87386
Al volver a pulsar enter nos dará una url que deberemos abrir en una nueva ventana para que se inicie el proceso.
Convirtiendo... Ya solo falta esperar a que termine y echarle un vistazo a las conversiones por si hay algo que pulir y dar esplendor.
Beneficios de SEO y rendimiento Aún hay un buen montón de gente fiel al minimalismo del editor clásico , pero Gutenberg, aunque a un ritmo desesperadamente lento, ha mejorado mucho desde su salida. Usarlo tiene ya más beneficios que desventajas. Por otra parte, si eres de los que sólo escribes y no necesitas de cachivaches varios, adornos, listas y otros elementos para enriquecer el texto, el editor clásico es perfecto.
Beneficios de SEO: No esperes que de la noche a la mañana tu sitio corone la lista de los resultados de las búsquedas por hacer esta conversión, pero toda mejora suma.
Mejor estructura del contenido: Gutenberg permite crear contenido más estructurado mediante bloques (párrafos, encabezados, listas, etc.). Facilita que los motores de búsqueda entiendan mejor la jerarquía y la relevancia del contenido. Optimización de encabezados (H1, H2, H3, etc.): Es más fácil añadir y gestionar encabezados, mejorando la legibilidad y organización del contenido. Imágenes más optimizadas: Gutenberg permite añadir atributos alt, títulos y descripciones directamente en los bloques de imágenes. Uso de bloques específicos para SEO: Si usas plugins como Yoast SEO o Rank Math , estos ofrecen bloques específicos para mejorar el SEO (por ejemplo, bloques de FAQ o Schema Markup). Contenido más interactivo: Bloques interactivos (tablas, botones, acordeones) mejoran la experiencia del usuario y reducen la tasa de rebote. Las entradas largas con muchos elementos publicadas con el editor clásico suelen tener el CLS por las nubes y también son más lentas, por lo que indexan peor o pierden posicionamiento Beneficios de rendimiento: Código más limpio y ligero: Gutenberg genera un HTML más limpio y semántico, reduciendo el tamaño de la página y mejorando los tiempos de carga. Carga diferida de recursos: Algunos bloques (como imágenes) permiten la carga diferida (lazy loading) de forma nativa. Menos dependencia de shortcodes: Gutenberg permite reemplazar muchos shortcodes con bloques nativos más eficientes. Optimización del contenido visible (above the fold): Facilita la creación de contenido optimizado para la parte visible de la página sin hacer scroll. Menos plugins necesarios: Reduce la carga de plugins al integrar funcionalidades como columnas, tablas o botones. Beneficios adicionales:
Mejor experiencia de edición al ofrecer una experiencia de edición más moderna e intuitiva.
Compatibilidad con temas y plugins modernos. Muchos temas y plugins están optimizados ya para Gutenberg.
Futuro del editor.
Aquí no lo tengo tan claro. Gutenberg es el (único) futuro de WordPress, aunque creo que no tanto la FSE (Full Site Editing) porque no todas las plantillas son FSE y muchas de las plantillas más populares no han lanzado versiones FSE. Además, el personal sigue usando Elementor o Bricks como constructor o GenerateBlocks y/o Kadence, como bloques de apoyo.