URLs aus WordPress exportieren

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.