Якщо вашому блогу вже кілька років і в певний момент ви перейшли на редактор Gutenberg, залишивши всі старі пости, опубліковані в класичному форматі редактора, можливо, ви захочете конвертувати їх у блоки Gutenberg за один раз.
Така міграція може запропонувати деякі переваги для SEO та продуктивності. Вони описані в кінці цієї статті.
Перетворити на блоки Єдиний пристойний плагін, що залишився для полегшення цього перетворення - 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');
Цікавим у плагіні є те, що він конвертує "на льоту". Це означає, що якщо ви редагуєте будь-який допис, він автоматично конвертується в Gutenberg, коли ви відкриваєте редактор. Якщо щось піде не так, ви можете побачити це і вийти без збереження, відкинувши зміни, щоб відредагувати те, що, на вашу думку, спричинило помилку перетворення, і спробувати ще раз.
Це чудово підходить для перетворення кількох десятків постів. Він працює дуже добре і успішно перетворює майже всі пости, на яких я його тестував. Конвертувати в блоки попереджає, що за замовчуванням він не буде перетворювати ваші кастомні блоки.
Перетворення масових або партійних партій Але що робити, якщо у вас є сотні або тисячі постів, як у моєму випадку? Саме тут вступає в дію найкорисніша функція плагіна. Він дозволяє виконувати масове перетворення за допомогою 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.
Якщо у вас віртуальний хостинг або ви просто не хочете сповільнювати швидкість завантаження через високе використання процесора при конвертації (майте на увазі, що вона не тільки конвертує, але й зберігає/публікує всі пости по одному), я раджу вам робити це пакетами.
Я вибрав варіант перетворення певної кількості постів шляхом додавання блоків приблизно по 100 ідентифікаторів у кожній партії.
Ми знаємо, як побачити ідентифікатор допису, оскільки в редакції він з'являється в URL-адресі, але тепер нам потрібно витягти всі ідентифікатори дописів, опублікованих у класичному редакторі, відокремлені комою без пробілів.
Для цього у мене теж є функція.
// 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.
І це те, що ви отримаєте (*в редакції я додав, що я також включив цифру загальної суми).
Тепер ви можете вибрати необмежену кількість ідентифікаторів і конвертувати їх партіями за бажанням.
Оскільки на LucusHost встановлено WP-CLI, з cPanel у мене є термінал, готовий дати йому тростину.
Він відкривається і підключається до кореневого шляху вашої інсталяції WP.
cd public_html/staging
Enter
Нарешті, ми вводимо нашу команду з ідентифікаторами постів, які ми збираємося перетворити. Приклад:
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
Повторне натискання клавіші Enter дасть нам URL-адресу, яку потрібно буде відкрити в новому вікні, щоб почати процес.
Перетворення... Тепер нам залишається лише дочекатися його завершення і поглянути на перетворення, щоб зрозуміти, чи є що відшліфувати і доопрацювати.
Переваги SEO та продуктивності Є ще багато людей, вірних мінімалізму класичного редактора , але Gutenberg, хоч і відчайдушно повільними темпами, але значно покращився з моменту свого випуску. Його використання вже має більше переваг, ніж недоліків.
Переваги SEO: Не сподівайтеся, що завдяки цій конверсії ваш сайт одразу ж опиниться на вершині списку результатів пошуку, але кожне покращення має значення.
Краща структура контенту: Gutenberg дозволяє створювати більш структурований контент за допомогою блоків (абзаців, заголовків, списків тощо). Це допомагає пошуковим системам краще зрозуміти ієрархію та релевантність контенту. Оптимізація заголовків (H1, H2, H3 тощо): Легше додавати заголовки та керувати ними, покращуючи читабельність та організацію контенту. Більше оптимізованих зображень: Gutenberg дозволяє додавати атрибути alt, заголовки та описи безпосередньо до блоків зображень. Використання спеціальних блоків для SEO: Якщо ви використовуєте такі плагіни, як Yoast SEO або Rank Math , вони пропонують спеціальні блоки для поліпшення SEO (наприклад, блоки FAQ або Schema Markup). Більше інтерактивного контенту: Інтерактивні блоки (таблиці, кнопки, акордеони) покращують користувацький досвід і знижують показник відмов. Довгі записи з великою кількістю елементів, опубліковані в класичному редакторі, мають високий CLS, а також повільніші, тому вони гірше індексуються або втрачають позиції. Підвищення продуктивності: Чистіший та легший код: Gutenberg генерує чистіший, більш семантичний HTML, зменшуючи розмір сторінки та пришвидшуючи її завантаження. Відкладене завантаження ресурсів: Деякі блоки (наприклад, зображення) дозволяють ліниве завантаження нативно. Менша залежність від шорткодів: Gutenberg дозволяє замінити багато шорткодів на більш ефективні нативні блоки. Оптимізація видимого контенту (над згином): Це дозволяє легко створювати оптимізований контент для видимої частини сторінки без прокрутки. Потрібно менше плагінів: Зменшіть навантаження на плагін, інтегрувавши такі функціональні можливості, як стовпці, таблиці або кнопки. Додаткові переваги:
Кращий досвід редагування: Він пропонує більш сучасний та інтуїтивно зрозумілий досвід редагування. Сумісність із сучасними темами та плагінами: Багато тем і плагінів вже оптимізовано для Gutenberg.
Майбутнє видавництва.
Тут для мене не все так однозначно. Гутенберг - це (єдине) майбутнє WordPress, хоча я не думаю, що це майбутнє FSE (повне редагування сайту), тому що не всі шаблони є FSE, і багато найпопулярніших шаблонів не випустили FSE-версії. Крім того, співробітники все ще використовують Elementor або Bricks як конструктор або GenerateBlocks і/або Kadence як допоміжні блоки.