Als je blog een paar jaar oud is en je bent op een gegeven moment overgestapt op de Gutenberg-editor, waardoor al die oude posts in de klassieke editor-indeling zijn gepubliceerd, wil je ze misschien nu in één keer converteren naar Gutenberg-blokken.
Deze migratie kan een aantal SEO- en prestatievoordelen opleveren. Deze worden aan het einde van deze post uitgelegd.
Converteren naar blokken De enige fatsoenlijke plug-in die overblijft om deze conversie te vergemakkelijken is Convert To Blocks . Installeer het gewoon. Het heeft geen instellingen of beheerdersgedeelte en heeft er ook geen nodig.
Als je nu de lijst met vermeldingen opent, zie je rechts van de titel een nieuwe kolom die aangeeft of de vermelding is gepubliceerd met de Klassieke Editor of de Gutenberg Blok-editor. Het ontbreekt echter aan een manier om ze te sorteren.
Het is niet zo geweldig omdat dit kan worden gedaan met een functie die aan de rechterkant een kolom toevoegt met "Classic" of "Gutenberg" voor elke post. Zoiets als dit:
// 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');
Het interessante aan de plugin is dat hij "on the fly" converteert. Dit betekent dat als je een bericht bewerkt, het automatisch wordt geconverteerd naar Gutenberg wanneer je de editor opent. Als er iets fout gaat kun je dit zien en afsluiten zonder op te slaan, de wijzigingen weggooien om te bewerken wat je vermoedt dat de conversiefout heeft veroorzaakt en het opnieuw proberen.
Dit is prima voor het converteren van enkele tientallen berichten. Het werkt erg goed en converteert bijna alle berichten waarop ik het getest heb. Convert to Blocks waarschuwt dat het standaard je aangepaste blokken niet zal converteren.
Bulk- of batchconversie Maar wat als je honderden of duizenden berichten hebt om te converteren, zoals in mijn geval? Dit is waar de meest nuttige functie van de plugin om de hoek komt kijken. Het maakt bulkconversie mogelijk met behulp van WP-CLI . Als je al weet hoe je WP-CLI moet gebruiken, kun je dit stukje overslaan en als je dat niet weet, kun je naar deze link gaan.
Op hun GitHub pagina kun je de lijst met commando's vinden die je kunt gebruiken.
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.
Als je een gedeelde hosting hebt of gewoon de laadsnelheid niet wilt vertragen vanwege het hoge CPU-gebruik van de conversie (vergeet niet dat het niet alleen converteert, maar ook alle berichten één voor één moet opslaan/publiceren), raad ik je aan om het in batches te doen.
Ik koos de optie om een bepaald aantal berichten te converteren door blokken van ongeveer 100 ID's toe te voegen in elke batch.
We weten hoe we de ID van een bericht kunnen zien omdat deze in de editie in de URL staat, maar nu moeten we alle ID's van de berichten die zijn gepubliceerd met de klassieke editor uitpakken, gescheiden door een komma zonder spaties.
Daar heb ik ook een functie voor.
// 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.
En dit is wat je krijgt (*in de revisie heb ik toegevoegd dat ik ook het totaalbedrag heb opgenomen).
Nu kun je zoveel ID's selecteren als je wilt en naar wens in batches converteren.
Omdat LucusHost WP-CLI heeft geïnstalleerd, heb ik vanuit cPanel de terminal klaarstaan om hem riet te geven.
Het opent en maakt verbinding met het rootpad van je WP-installatie.
cd public_html/staging
Enter
Tenslotte typen we ons commando met de ID's van de berichten die we gaan converteren. Voorbeeld:
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
Als we weer op enter drukken, krijgen we een url die we in een nieuw venster moeten openen om het proces te starten.
Converteren... Nu hoeven we alleen nog maar te wachten tot het klaar is en de conversies te bekijken om te zien of er iets is om bij te schaven en op te poetsen.
SEO en prestatievoordelen Er zijn nog steeds veel mensen die trouw blijven aan het minimalisme van de klassieke editor , maar Gutenberg is, zij het tergend langzaam, veel verbeterd sinds de release. Het gebruik ervan heeft nu al meer voordelen dan nadelen.
Voordelen van SEO: Verwacht niet dat je site door deze conversie van de ene op de andere dag bovenaan de lijst met zoekresultaten staat, maar elke verbetering telt op.
Betere structuur van de inhoud: Met Gutenberg kun je meer gestructureerde inhoud maken met behulp van blokken (alinea's, koppen, lijsten, enz.). Het maakt het zoekmachines gemakkelijker om de hiërarchie en relevantie van inhoud beter te begrijpen. Optimalisatie van koppen (H1, H2, H3, enz.): Het is eenvoudiger om koppen toe te voegen en te beheren, waardoor de leesbaarheid en de organisatie van de inhoud worden verbeterd. Meer geoptimaliseerde afbeeldingen: Met Gutenberg kunnen alt-attributen, titels en beschrijvingen direct aan afbeeldingsblokken worden toegevoegd. Gebruik van specifieke blokken voor SEO: Als je plugins zoals Yoast SEO of Rank Math gebruikt, bieden deze specifieke blokken om SEO te verbeteren (bijvoorbeeld FAQ-blokken of Schema Markup). Meer interactieve inhoud: Interactieve blokken (tabellen, knoppen, accordeons) verbeteren de gebruikerservaring en verlagen het bouncepercentage. Lange vermeldingen met veel elementen die zijn gepubliceerd met de klassieke editor hebben vaak een hoge CLS en zijn ook langzamer, waardoor ze slechter indexeren of positionering verliezen. Prestatievoordelen: Schonere en lichtere code: Gutenberg genereert schonere, semantischere HTML, waardoor de paginagrootte afneemt en de laadtijden verbeteren. Uitgestelde belasting van middelen: Sommige blokken (zoals afbeeldingen) kunnen van nature lui worden geladen. Minder afhankelijk van shortcodes: Met Gutenberg kunnen veel shortcodes worden vervangen door efficiëntere native blokken. Optimalisatie van zichtbare inhoud (boven de vouw): Het maakt het eenvoudig om geoptimaliseerde inhoud te maken voor het zichtbare deel van de pagina zonder te scrollen. Minder plugins nodig: Verminder de belasting van de plugin door functionaliteit zoals kolommen, tabellen of knoppen te integreren. Extra voordelen:
Betere bewerkingservaring: Het biedt een modernere en intuïtievere bewerkingservaring. Compatibiliteit met moderne thema's en plugins: Veel thema's en plugins zijn al geoptimaliseerd voor Gutenberg.
Toekomst van de uitgeverij.
Hier ben ik niet zo zeker van. Gutenberg is de (enige) toekomst van WordPress, al denk ik niet zozeer van FSE (Full Site Editing) omdat niet alle templates FSE zijn en veel van de populairste templates geen FSE-versies hebben uitgebracht. Ook gebruiken medewerkers nog steeds Elementor of Bricks als builder of GenerateBlocks en/of Kadence, als ondersteunende blokken.