Jeśli Twój blog ma kilka lat i w pewnym momencie przełączyłeś się na edytor Gutenberg, pozostawiając wszystkie te stare posty opublikowane w klasycznym formacie edytora, możesz chcieć przekonwertować je teraz na bloki Gutenberg za jednym zamachem.
Przeprowadzenie tej migracji może przynieść pewne korzyści w zakresie SEO i wydajności. Zostały one wyjaśnione na końcu tego wpisu.
Konwersja na bloki Jedyną przyzwoitą wtyczką ułatwiającą tę konwersję jest Convert To Blocks . Wystarczy ją zainstalować. Nie ma ona żadnych ustawień ani obszaru administracyjnego, ani też ich nie potrzebuje.
Teraz, gdy otworzysz listę wpisów, po prawej stronie tytułu znajdziesz nową kolumnę, która informuje, czy wpis został opublikowany przy użyciu Edytora klasycznego, czy Edytora bloków Gutenberga. Brakuje jednak sposobu na ich sortowanie.
Nie jest to takie wspaniałe, ponieważ można to zrobić za pomocą funkcji, która doda kolumnę po prawej stronie pokazującą "Classic" lub "Gutenberg" do każdego posta. Coś takiego:
// 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');
Ciekawą rzeczą w tej wtyczce jest to, że konwertuje ona "w locie". Oznacza to, że jeśli edytujesz dowolny post, zostanie on automatycznie przekonwertowany na Gutenberg po otwarciu edytora. Jeśli coś pójdzie nie tak, możesz to zobaczyć i wyjść bez zapisywania, odrzucając zmiany, aby edytować to, co podejrzewasz, że spowodowało błąd konwersji i spróbować ponownie.
Nadaje się do konwersji kilkudziesięciu postów. Działa bardzo dobrze i z powodzeniem konwertuje prawie wszystkie posty, na których go testowałem. Convert to Blocks ostrzega, że domyślnie nie będzie konwertować niestandardowych bloków.
Konwersja zbiorcza lub wsadowa Ale co, jeśli masz setki lub tysiące, tak jak w moim przypadku, postów do konwersji? Tutaj do gry wkracza najbardziej przydatna funkcja wtyczki. Pozwala ona na masową konwersję przy użyciu WP-CLI . Jeśli wiesz już, jak korzystać z WP-CLI, możesz pominąć ten fragment, a jeśli nie, możesz przejść do tego linku .
Na ich stronie GitHub można znaleźć listę poleceń , których można użyć.
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.
Jeśli masz hosting współdzielony lub po prostu nie chcesz spowalniać prędkości ładowania z powodu wysokiego zużycia procesora podczas konwersji (pamiętaj, że nie tylko konwertuje, ale także zapisuje/publikuje wszystkie posty jeden po drugim), radzę robić to partiami.
Wybrałem opcję konwersji określonej liczby postów, dodając bloki po około 100 identyfikatorów w każdej partii.
Wiemy, jak zobaczyć identyfikator postu, ponieważ w edycji pojawia się on w adresie URL, ale teraz musimy wyodrębnić wszystkie identyfikatory postów opublikowanych w klasycznym edytorze oddzielone przecinkiem bez spacji.
Mam również funkcję do tego celu.
// 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.
A oto, co otrzymasz (*w poprawce dodałem, że podaję również całkowitą kwotę).
Teraz możesz wybrać dowolną liczbę identyfikatorów i konwertować je w dowolnych partiach.
Ponieważ LucusHost ma zainstalowane WP-CLI, z cPanelu mam gotowy terminal, aby dać mu laskę.
Otwiera się i łączy ze ścieżką główną instalacji WP.
cd public_html/staging
Enter
Na koniec wpisujemy nasze polecenie z identyfikatorami postów, które chcemy przekonwertować. Przykład:
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
Ponowne naciśnięcie klawisza Enter spowoduje wyświetlenie adresu URL, który będziemy musieli otworzyć w nowym oknie, aby rozpocząć proces.
Konwersja... Teraz musimy tylko poczekać, aż zostanie ukończona i przyjrzeć się konwersjom, aby zobaczyć, czy jest coś do dopracowania i dopracowania.
Korzyści dla SEO i wydajności Wciąż jest wiele osób wiernych minimalizmowi klasycznego edytora , ale Gutenberg, choć w rozpaczliwie wolnym tempie, znacznie się poprawił od czasu jego wydania. Korzystanie z niego ma już więcej zalet niż wad.
Korzyści z SEO: Nie oczekuj, że dzięki tej konwersji Twoja witryna z dnia na dzień znajdzie się na szczycie listy wyników wyszukiwania, ale każde ulepszenie ma znaczenie.
Lepsza struktura treści: Gutenberg umożliwia tworzenie bardziej ustrukturyzowanych treści za pomocą bloków (akapity, nagłówki, listy itp.). Ułatwia to wyszukiwarkom lepsze zrozumienie hierarchii i trafności treści. Optymalizacja nagłówków (H1, H2, H3 itd.): Łatwiej jest dodawać nagłówki i zarządzać nimi, poprawiając czytelność i organizację treści. Więcej zoptymalizowanych obrazów: Gutenberg umożliwia dodawanie atrybutów alt, tytułów i opisów bezpośrednio do bloków obrazów. Wykorzystanie określonych bloków dla SEO: Jeśli korzystasz z wtyczek takich jak Yoast SEO lub Rank Math , oferują one specjalne bloki poprawiające SEO (np. bloki FAQ lub Schema Markup). Więcej interaktywnych treści: Interaktywne bloki (tabele, przyciski, akordeony) poprawiają wrażenia użytkownika i zmniejszają współczynnik odrzuceń. Długie wpisy z wieloma elementami publikowane za pomocą klasycznego edytora mają zazwyczaj wysoki CLS, a także są wolniejsze, przez co gorzej się indeksują lub tracą na pozycjonowaniu. Korzyści z wydajności: Czystszy i lżejszy kod: Gutenberg generuje czystszy, bardziej semantyczny HTML, zmniejszając rozmiar strony i poprawiając czas ładowania. Odroczone obciążenie zasobów: Niektóre bloki (takie jak obrazy) umożliwiają leniwe ładowanie natywnie. Mniejsza zależność od skrótów: Gutenberg umożliwia zastąpienie wielu skrótów bardziej wydajnymi blokami natywnymi. Optymalizacja widocznych treści (above the fold): Ułatwia to tworzenie zoptymalizowanej zawartości dla widocznej części strony bez przewijania. Mniej potrzebnych wtyczek: Zmniejsz obciążenie wtyczki, integrując funkcje, takie jak kolumny, tabele lub przyciski. Dodatkowe korzyści:
Lepsze wrażenia z edycji: Oferuje bardziej nowoczesną i intuicyjną edycję. Kompatybilność z nowoczesnymi motywami i wtyczkami: Wiele motywów i wtyczek jest już zoptymalizowanych pod kątem Gutenberga.
Przyszłość wydawcy.
Tutaj nie jestem taki pewien. Gutenberg jest (jedyną) przyszłością WordPressa, chociaż myślę, że nie tak bardzo FSE (Full Site Editing), ponieważ nie wszystkie szablony są FSE, a wiele najpopularniejszych szablonów nie wydało wersji FSE. Ponadto pracownicy nadal używają Elementora lub Bricks jako konstruktora lub GenerateBlocks i / lub Kadence, jako bloków wsparcia.