Jetzt fahren wir dann tatsächlich 2-Gleisig. Mit SQL kommen wir nämlich ab sofort nicht mehr wirklich weiter, oder es wäre deutlich aufwendiger. Darum benutzt Ihr jetzt entweder mein bereits mehrfach verlinktes und erwähntes Plugin, ein eigenes PHP-Snippet oder geht den Weg über CLI. Ich erklärs mit meinem Plugin + CLI. Der Weg über das PHP-Snippet wurde bereits im Artikel „Bilderkauderwelsch – Korrupte und fehlerhafte Galeriebilder nach einem WordPress Merge wiederherstellen“ erwähnt. Im Endeffekt machen wir genau das. Nur ich wollte es alternativ dieses mal erledigen, die Logik wusste ich ja nun. So ist auch mein WP-Plugin enstanden *yeah*.
Was machen wir jetzt aber? In den Posts / Beiträgen sind die „alten“ ID’s noch vorhanden. Jetpack nutzt in aller Regel
oder Block-Gallery. Diese beinhalten die ursprünglichen Bilder-ID’s. Da wir diese aber mit einem Offset +50.000 versehen haben, passen diese selbstverständlich nun nicht mehr zusammen.
Der Weg über CLI
Wir erstellen eine leere PHP-Datei „fix-gallery-ids.php“. Entweder Ihr verwendet zum Ausführer dieser nun ein PHP-Snippet Plugin oder CLI. Ich erkläre hier kurz CLI.
Kopiert den nachfolgenden Code. Achtet natürlich dabei auf die richtigen Prefixe. Legt es am besten im WP-Root des Zielblogs ab, z.B. neben wp-config.php.
<?php
// dasFLOSEN Usage explain for testing:
// wp eval-file fix-gallery-ids.php 50000 --dry-run
//
// dasFLOSEN Usage explain for execute:
// wp eval-file fix-gallery-ids.php 50000
$offset = intval($args[0] ?? 0);
$dryRun = in_array('--dry-run', $args, true);
if ($offset === 0) {
WP_CLI::error("Offset missing. Example: wp eval-file fix-gallery-ids.php 50000");
}
WP_CLI::log("Offset: {$offset}");
WP_CLI::log("Dry-run: " . ($dryRun ? "YES" : "NO"));
global $wpdb;
$rows = $wpdb->get_results("
SELECT ID, post_content
FROM {$wpdb->posts}
WHERE post_status IN ('publish','draft','private','future')
AND post_type IN ('post','page')
AND (
post_content LIKE '%
Nun verbindet Ihr Euch per Terminal und SSH auf Euren Webserver und führt es entsprechend aus. Bei mir lief es auf einem Apache auf meiner Synology einwandfrei. Evtl. mach ich mal einen Artikel der die Einrichtung unter Synology erklärt, da es hier auch einige Stolperfallen gab.
Zunächst testen wir… (dry-run):
wp eval-file fix-gallery-ids.php 50000 --dry-run
Danach schreiben wir:
wp eval-file fix-gallery-ids.php 50000
Das wars, die ID’s sind jetz tin allen Artikeln geradegezogen!
Über WP Fix Plugin
Der Weg über mein Plugin ist simple. Sobald das Plugin aktiv ist führen wir folgende Funktion aus:
Wie genau ihr die start_id etc. setzt ist im PluginArtikel – der auch als Doku gilt – erklärt.
Meine Name ist Florian. Sternzeit -338000.22768670303. Der Nerd der "Familie Schickischmi". Beruflich bin ich technikbegeisterter Papiervernichter. Privat natürlich ebenso der Tekkie im Familienuniversum, der aber trotzdem viel Zeit Draussen und beim Knipsen verbringt. Mir kanns nicht kalt und vom Reiseziel nördlich genug sein. Würde ich wählen, würde ich lieber die schorfen Klippen vom Ende der Welt wählen, als irgendeinen Südsee-Strand. Ich nehm also lieber die -20°C als alles über 25°C
Schreibe den ersten Kommentar