Array ( [0] => facebook [1] => twitter [2] => google_plus )

How-To: Veröffentl. WordPress-Artikel programmatisch verarbeiten

Posted on:23. März 2016

Author:Markus Köhler

Category:Programmierung

Share: / /

Heute habe ich meine Datenbank an alten Blog-Artikeln ausgemistet. Dabei wollte ich unter anderem eine Auflistung sämtlicher veröffentlichter Artikel, also keine Entwürfe – und zwar menschenlesbar. Gar nicht so einfach, wie sich herausstellen sollte. Im Endeffekt habe ich eine frische WordPress-Installation an die alte Datenbank angebunden, die veröffentlichten Artikel als XML exportiert, diese XML dann mit PHP aufbereitet und als HTML ausgegeben. Das selbe lässt sich dank der filterbaren Export-Funktion von WordPress auch nach Entwürfen oder einem speziellen Autor, Kategorie oder Datum filtern und dann weiter verarbeiten.

Ich setze in dieser Anleitung voraus, dass eine Datenbank mit den alten Artikeln bereits bereitsteht, sowie ein lokaler Webserver installiert ist.

  1. WordPress (in der aktuellsten Version) herunterladen und lokal in das Webserver-Verzeichnis (htdocs) entpacken.
  2. wp-config-sample.php kopieren und umbenennen in wp-config.php, dann die Datenbankverbindung in die Config eintragen
  3. Nun sollte beim Aufruf im Browser evtl. die Startseite des Blogs nicht erreichbar sein, aber eine Anmeldung an wp-admin mit den Benutzerdaten des alten Blogs möglich sein.
  4. Unter Werkzeuge -> Daten exportieren im Admin-Bereich kann man nun auswählen, was man gerne als XML exportiert hätte.
  5. Danach die XML-Datei in einen neuen Ordner im Webserver-Verzeichnis (htdocs) verschieben. In demselben Ordner eine PHP-Datei erstellen mit folgendem Inhalt:

<?php
$xml = file_get_contents(‚<dateiname>‘);
$xml = simplexml_unCDATAise($xml);
$result = simplexml_load_string($xml,’SimpleXMLElement‘,LIBXML_NOCDATA);
$ns = $result->getNamespaces(true);
foreach ($result->channel->item as $itm) {
echo ‚<h1>‘ . $itm->title . ‚</h1> (‚ . $itm->pubDate . ‚)<br /><br/>‘;
echo $itm->children($ns[‚content‘]);
echo ‚<hr/>‘;
}

function simplexml_unCDATAise($xml) {
$new_xml = NULL;
preg_match_all(„/\<\!\[CDATA \[(.*)\]\]\>/U“, $xml, $args);

if (is_array($args)) {
if (isset($args[0]) && isset($args[1])) {
$new_xml = $xml;
for ($i=0; $i<count($args[0]); $i++) {
$old_text = $args[0][$i];
$new_text = htmlspecialchars($args[1][$i]);
$new_xml = str_replace($old_text, $new_text, $new_xml);
}
}
}

return $new_xml;
}
?>

<dateiname> selbstverständlich durch den Namen der XML-Datei ersetzen. Das Script ist nicht perfekt, nur auf die Schnelle zusammenkopiert aus PHP-Doku und StackOverflow. Wenn man die PHP-Datei nun im Browser aufruft, sollte man eine einigermaßen lesbare Ansicht der ehemaligen Blog-Artikel vorfinden, so dass sich der Text einfach weiterverarbeiten lässt.

GD Star Rating
loading...

Kommentar verfassen

%d Bloggern gefällt das: