Durch den Relaunch meiner Website stand ich vor der Herausforderung alles URLs von Beiträge, Seiten, Kategorien und Tags händisch aus dem System zu holen. Diese benötige ich um die richtigen Umleitungen in der .htaccess
setzen zu können.
Das hätte ewig gedauert und ich hätte bestimmt auch Fehler gemacht. Also musst etwas besseres her. Mit wenigen Code-Zeilen konnte ich das Problem schnell lösen.
Alle Seiten-URLs aus der WordPress Datenbank ziehen
<?php
include "wp-load.php";
$posts = new WP_Query('post_type=any&posts_per_page=-1&post_status=publish');
$posts = $posts->posts;
/*
global $wpdb;
$posts = $wpdb->get_results("
SELECT ID,post_type,post_title
FROM {$wpdb->posts}
WHERE post_status<>'auto-draft' AND post_type NOT IN ('revision','nav_menu_item')
");
*/
header('Content-type:text/plain');
foreach($posts as $post) {
switch ($post->post_type) {
case 'revision':
case 'nav_menu_item':
break;
case 'page':
$permalink = get_page_link($post->ID);
break;
}
echo "\n{$permalink}\t{$post->post_title}";
}
Andere URLs aus der WordPress Datenbank ziehen
In dem du eine andere Tabelle abfragst bekommst du auch andere URLs ausgeliefert, so einfach ist das 😋
case 'page':
$permalink = get_page_link($post->ID);
Also du musst nur wenig im oberen Beispiel ändern um z.B. an die Beitrags-URLs zu kommen. In Zeile 22 musst du für page
nur post
einsetzen und noch die Permalink-Abfrage anpassen.
case 'post':
$permalink = get_permalink($post->ID);
Schon bekommst du für jeden Beitrag die entsprechende URL.
Wie wird das umgesetzt?
Da du ja jetzt nicht irgendwo ein Feld hast wo du diese Zeilen hineinschreiben kannst musst du eine .php-Dateien erstellen.
Also einfach das obere Code-Beispiel copy&paste in einen Editor deiner Wahl und dann als .php-Datei abspeichern. Ich habe da so Namen wie export-wp-(CASE)-urls.php
vergeben. So konnte ich auch an der aufgerufenen URL sehen was ich gerade für URLs aus der Datenbank gezogen haben.
Diese .php-Datei musst du in das Root-Verzeichnis deiner WordPress-Instanz setzen und dann einfach über die URL: https://(DEINE-DOMAIN.de)/export-wp-(CASE)-urls.php
aufrufen.
Das Ergebnis ist eine einfach Textausgabe, diese kannst du dann ganz einfach weiter verarbeiten.
[…] Du solltest dir also am besten eine Liste erstellen in der alle alten URLs deiner Beträge stehen. Ich habe hierfür ein kleines PHP-Script genutzt um die URLs zu exportieren. […]