如果你的博客已经有几年的历史了,而你在某一时刻切换到了古腾堡编辑器,留下了所有以经典编辑器格式发布的旧文章,你可能想现在就将它们一次性转换为古腾堡区块。
进行这种迁移可以在搜索引擎优化和性能方面带来一些好处。本帖末尾将对此进行说明。
转换为块
目前,唯一能促进这种转换的插件就是Convert To Blocks。安装即可。它没有任何设置或管理区域,也不需要。
现在,当您打开条目列表时,会发现标题右侧新增了一栏,告诉您该条目是使用经典编辑器还是古腾堡块编辑器发布的。但是,缺少对它们进行排序的方法。

这并不是很好,因为可以用一个功能来实现,在每篇文章的右侧添加一列,显示 "经典 "或 "古腾堡"。类似这样
// 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');该插件的有趣之处在于它可以 "即时 "转换。这意味着,如果您编辑任何文章,当您打开编辑器时,它会自动转换为古腾堡。 如果出了问题,你可以看到它并退出而不保存,放弃修改,编辑你怀疑导致转换错误的内容,然后再试一次。
这对于转换几十个帖子来说很好。它运行得非常好,几乎成功转换了我测试过的所有帖子。Convert to Blocks提醒您,默认情况下它不会转换您的自定义区块。
批量或批次转换
但如果像我这样有成百上千的帖子需要转换呢?这就是插件最有用的功能所在。它允许使用WP-CLI 进行批量转换。如果你已经知道如何使用 WP-CLI,可以跳过这部分内容;如果不知道,可以访问此链接。
在他们的 GitHub 页面上,你可以找到可以使用的 命令列表 。
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.
如果您使用的是共享主机,或者只是不想因为转换过程中 CPU 占用率过高而降低加载速度(请记住,它不仅要进行转换,还必须逐一保存/发布所有帖子),我建议您分批进行转换。
我选择了转换一定数量帖子的选项,每批添加约 100 个 ID 的区块。
我们知道如何查看帖子的 ID,因为在版本中,它出现在 URL 中,但现在我们需要提取使用经典编辑器发布的所有帖子的 ID,这些 ID 用逗号分隔,不留空格。
我还有一个功能。
// 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.
这就是您将得到的结果(*在修订本中,我还加上了总金额的数字)。

现在,您可以根据需要选择任意多个 ID 并进行批量转换。
由于LucusHost已安装了 WP-CLI,我已在 cPanel 中准备好终端,可以给他提供手杖。
它会打开并连接到 WP 安装的根路径。
cd public_html/staging
Enter最后,我们键入命令,并输入要转换的帖子 ID。例如
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再按一次回车键,就会出现一个网址,我们必须在新窗口中打开该网址才能开始程序。
转换...

现在,我们只需等待它完工,然后看看改装后是否有需要打磨和抛光的地方。
搜索引擎优化和性能优势
仍有很多人忠于经典编辑器的极简主义,但古腾堡自发布以来,尽管速度极慢,但已经有了很大改进。使用它已经利大于弊。
搜索引擎优化的好处:
不要指望通过这种转换,您的网站一夜之间就能在搜索结果中名列前茅,但每一次改进都会增加您的网站排名。
- 更好的内容结构:
- Gutenberg 允许您使用块(段落、标题、列表等)创建结构更合理的内容。
- 它使搜索引擎更容易更好地理解内容的层次和相关性。
- 优化标题(H1、H2、H3 等):
- 更容易添加和管理标题,提高内容的可读性和组织性。
- 更优化的图像:
- Gutenberg 允许在图片块中直接添加 alt 属性、标题和描述。
- 使用特定区块进行搜索引擎优化:
- 如果您使用 Yoast SEO 或Rank Math 等插件,它们会提供用于改进搜索引擎优化的特定块(如常见问题块或 Schema 标记)。
- 更多互动内容:
- 交互式区块(表格、按钮、手风琴)可改善用户体验,降低跳出率。
- 使用经典编辑器发布的包含许多元素的长条目往往具有较高的 CLS,而且速度较慢,因此索引较差或失去定位。
性能优势:
- 代码更简洁
- Gutenberg 可生成更简洁、语义更丰富的 HTML,从而减小页面大小并缩短加载时间。
- 递延加载资源:
- 某些区块(如图片)允许本机懒加载。
- 减少对简码的依赖:
- Gutenberg 允许用更高效的原生区块取代许多简码。
- 优化可见内容(折叠上方):
- 它可以轻松为页面的可见部分创建优化内容,而无需滚动。
- 所需的插件更少:
- 通过整合列、表格或按钮等功能,减少插件负载。
其他好处
- 更好的编辑体验
- 它提供了更现代、更直观的编辑体验。
- 与现代主题和插件兼容:
- 许多主题和插件已经针对 Gutenberg 进行了优化。
出版商的未来。
在这里,我不太确定。古腾堡是(唯一的)WordPress 的未来,不过我不太看好FSE(全站编辑),因为并非所有模板都是 FSE,而且许多最流行的模板还没有发布 FSE 版本。此外,员工仍在使用 Elementor 或 Bricks 作为构建器,或使用 GenerateBlocks 和/或 Kadence 作为支持块。






