WordPress-Werkzeuge-Import
Heute bin ich mal in die Lage gekommen, Daten in ein neues WordPress-Web importieren zu müssen.
Grund: Ich habe für einen Kunden ein Theme gekauft, und wollte die Testdaten mit dem Theme installieren, um die Möglichkeiten des Themes möglichst life auszuprobieren, und um zu sehen, welcher Inhalt wie erfasst wurde.
Der Import dauert allerdings, vor allem, wenn er mit Anhängen durchgeführt wird, die noch hochgeladen werden müssen, relativ lange, und das führt u. U. zum Abbruch des Imports.
Die Importfunktion von WordPress ist ja eigentlich relativ einfach zu bedienen, hier die Arbeitsschritte:
- Dashboard starten
- Werkzeuge–>Import
- Auswahl der Datei
- Einstellen der Benutzeroption (auf welchen Benutzer die neuen Inhalte zugeordnet werden sollen)
- Auswahl der Option „Mit Anhängen downloaden und importieren“
- Start des Imports
Das Problem:
Nach einigen Minuten brach das Script immer mit „Internal Server Error 500“ ab. Der Import war natürlich unvollständig. Die Ursache liegt zumindest teilweise an der „Max_execution_time“ – sprich Timeout-Funktion des Servers.
Trotz Umstellung der max_execution_time in der php-ini, als auch der timeout-funktion in der Apache-Konfiguration war nach dem Import von jeweils ca. 400 Datensätzen in der wp_posts immer Schluss mit dem „Internal Server Error 500“.
Nach den oben beschriebenen Änderungen an der Serverkonfiguration habe ich das Thema diesbezüglich abgebrochen, und nach anderen Lösungen gesucht.
1 gefundener Lösungsansatz im Web: Komprimieren der XML-Datei, die importiert werden soll, in ein GZ-Archiv, mit dem kostenlosen Programm 7-zip erstellt. Dieser Lösungsansatz hat zwar dafür gesorgt, daß mehr Datensätze als vorher importiert wurden, aber das Ergebnis war immer noch weit jenseits der notwendigen Datenmenge (Nur ca. 350 von 1800 Datensätzen wurden importiert)
Übrig geblieben sind zwei Lösungen, die auch tatsächlich funktionieren.
Ansatz 1: Import über die Kommandozeilenfunktion von WordPress
Es gibt von oder für WordPress eine Kommandozeilenversion, mit der bestimmte Aufgaben direkt auf dem Linux-Webserver ausgeführt werden können. Dazu ist es allerdings nötig, dass der Provider diese Version auch installiert hat, oder dass er zulässt, dieses Tool zu installieren.
Informationen zur Installation:
https://www.a2hosting.com/kb/installable-applications/optimization-and-configuration/wordpress2/administering-wordpress-from-the-command-line
Ist das WP-CLI (WordPress – Command Line Interface) erstmal installiert geht der Import sehr leicht voran:
- Upload (per ftp) der xml-Import-Datei in das Root-Verzeichnis des Webs
- Start des Imports: wp import <xml-filename> –user=create
- Jetzt wird der Importlauf gestartet. Zu beginn des Scripts kommen ein paar Fehlermeldungen, die sich aber offensichtlich nicht auf das positive Ergebnis des Importlaufes auswirken.
- Nach diesen Fehlermeldungen wird dann jeder importierte Post (Seiten, Beiträge, Attachments) in der Linux-Shell angezeigt.
- Nächster Schritt nach dem Import: Löschen der erstellten User, und beim Löschen übertragen der Benutzer zu den Posts z. B. auf den Administrator.
- Das WP-CLI-Modul gibt zum Abschluss des Imports noch eine Erfolgs- oder Fehlermeldung aus. Die sollten Sie auf jeden Fall abwarten, da offensichtlich nicht alle Importbestandteile des Imports in der Shell ausgegeben werden, teilweise hat man den Eindruck, dass das Programm steht – hier bitte Geduld haben.
- Damit ist der Import über das WP-CLI abgeschlossen.
Ansatz 2: Aufteilen der Import-XML-Datei in mehrere XML-Dateien und dann Import der jeweiligen Teilversionen in mehreren Steps.
Um den Import auf diese Weise durchzuführen ist es wichtig, den Aufbau der XML-Datei nicht zu zerstören.
Hier ein Muster der Datei mit 2 zu importierenden Datensätzen („items“):
<?xml version="1.0" encoding="UTF-8" ?>
<rss version=“2.0″
xmlns:excerpt=“http://wordpress.org/export/1.2/excerpt/“
xmlns:content=“http://purl.org/rss/1.0/modules/content/“
xmlns:wfw=“http://wellformedweb.org/CommentAPI/“
xmlns:dc=“http://purl.org/dc/elements/1.1/“
xmlns:wp=“http://wordpress.org/export/1.2/“>
<channel>
<title>Wego</title>
<link>http://wegodesign.net/wego</link>
<description>Premium WordPress Multi-purpose Theme</description>
<pubDate>Tue, 17 Feb 2015 03:44:53 +0000</pubDate>
<language>en-US</language>
<wp:wxr_version>1.2</wp:wxr_version>
<wp:base_site_url>http://wegodesign.net/wego</wp:base_site_url>
<wp:base_blog_url>http://wegodesign.net/wego</wp:base_blog_url>
<item>
<title>6872410196_97eac527af_o</title>
<link>http://wegodesign.net/wego/?attachment_id=2138</link>
<pubDate>Tue, 13 Jan 2015 23:52:18 +0000</pubDate>
<dc:creator><![CDATA[konko.oleg2@gmail.com]]></dc:creator>
<guid isPermaLink=“false“>http://wegodesign.net/wego/wp-content/uploads/2015/01/6872410196_97eac527af_o.jpg</guid>
<description></description>
<content:encoded><![CDATA[]]></content:encoded>
<excerpt:encoded><![CDATA[]]></excerpt:encoded>
<wp:post_id>2138</wp:post_id>
<wp:post_date>2015-01-13 23:52:18</wp:post_date>
<wp:post_date_gmt>2015-01-13 23:52:18</wp:post_date_gmt>
<wp:comment_status>open</wp:comment_status>
<wp:ping_status>open</wp:ping_status>
<wp:post_name>6872410196_97eac527af_o</wp:post_name>
<wp:status>inherit</wp:status>
<wp:post_parent>0</wp:post_parent>
<wp:menu_order>0</wp:menu_order>
<wp:post_type>attachment</wp:post_type>
<wp:post_password></wp:post_password>
<wp:is_sticky>0</wp:is_sticky>
<wp:attachment_url>http://wegodesign.net/wego/wp-content/uploads/2015/01/6872410196_97eac527af_o.jpg</wp:attachment_url>
<wp:postmeta>
<wp:meta_key>_wp_attached_file</wp:meta_key>
<wp:meta_value><![CDATA[2015/01/6872410196_97eac527af_o.jpg]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
<wp:meta_key>_wp_attachment_metadata</wp:meta_key>
<wp:meta_value><![CDATA[a:5:{s:5:“width“;i:1620;s:6:“height“;i:1080;s:4:“file“;s:35:“2015/01/6872410196_97eac527af_o.jpg“;s:5:“sizes“;a:7:{s:9:“thumbnail“;a:4:{s:4:“file“;s:35:“6872410196_97eac527af_o-150×150.jpg“;s:5:“width“;i:150;s:6:“height“;i:150;s:9:“mime-type“;s:10:“image/jpeg“;}s:6:“medium“;a:4:{s:4:“file“;s:35:“6872410196_97eac527af_o-300×200.jpg“;s:5:“width“;i:300;s:6:“height“;i:200;s:9:“mime-type“;s:10:“image/jpeg“;}s:5:“large“;a:4:{s:4:“file“;s:36:“6872410196_97eac527af_o-1024×683.jpg“;s:5:“width“;i:1024;s:6:“height“;i:683;s:9:“mime-type“;s:10:“image/jpeg“;}s:14:“shop_thumbnail“;a:4:{s:4:“file“;s:34:“6872410196_97eac527af_o-122×98.jpg“;s:5:“width“;i:122;s:6:“height“;i:98;s:9:“mime-type“;s:10:“image/jpeg“;}s:12:“shop_catalog“;a:4:{s:4:“file“;s:35:“6872410196_97eac527af_o-268×300.jpg“;s:5:“width“;i:268;s:6:“height“;i:300;s:9:“mime-type“;s:10:“image/jpeg“;}s:11:“shop_single“;a:4:{s:4:“file“;s:35:“6872410196_97eac527af_o-528×320.jpg“;s:5:“width“;i:528;s:6:“height“;i:320;s:9:“mime-type“;s:10:“image/jpeg“;}s:14:“post-thumbnail“;a:4:{s:4:“file“;s:35:“6872410196_97eac527af_o-672×372.jpg“;s:5:“width“;i:672;s:6:“height“;i:372;s:9:“mime-type“;s:10:“image/jpeg“;}}s:10:“image_meta“;a:11:{s:8:“aperture“;i:0;s:6:“credit“;s:0:““;s:6:“camera“;s:0:““;s:7:“caption“;s:0:““;s:17:“created_timestamp“;i:0;s:9:“copyright“;s:0:““;s:12:“focal_length“;i:0;s:3:“iso“;i:0;s:13:“shutter_speed“;i:0;s:5:“title“;s:0:““;s:11:“orientation“;i:0;}}]]></wp:meta_value>
</wp:postmeta>
</item>
<item>
<title>4937214679_0da811ed8b_o</title>
<link>http://wegodesign.net/wego/?attachment_id=2139</link>
<pubDate>Wed, 14 Jan 2015 02:07:10 +0000</pubDate>
<dc:creator><![CDATA[konko.oleg2@gmail.com]]></dc:creator>
<guid isPermaLink=“false“>http://wegodesign.net/wego/wp-content/uploads/2015/01/4937214679_0da811ed8b_o.jpg</guid>
<description></description>
<content:encoded><![CDATA[]]></content:encoded>
<excerpt:encoded><![CDATA[]]></excerpt:encoded>
<wp:post_id>2139</wp:post_id>
<wp:post_date>2015-01-14 02:07:10</wp:post_date>
<wp:post_date_gmt>2015-01-14 02:07:10</wp:post_date_gmt>
<wp:comment_status>open</wp:comment_status>
<wp:ping_status>open</wp:ping_status>
<wp:post_name>4937214679_0da811ed8b_o</wp:post_name>
<wp:status>inherit</wp:status>
<wp:post_parent>0</wp:post_parent>
<wp:menu_order>0</wp:menu_order>
<wp:post_type>attachment</wp:post_type>
<wp:post_password></wp:post_password>
<wp:is_sticky>0</wp:is_sticky>
<wp:attachment_url>http://wegodesign.net/wego/wp-content/uploads/2015/01/4937214679_0da811ed8b_o.jpg</wp:attachment_url>
<wp:postmeta>
<wp:meta_key>_wp_attached_file</wp:meta_key>
<wp:meta_value><![CDATA[2015/01/4937214679_0da811ed8b_o.jpg]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
<wp:meta_key>_wp_attachment_metadata</wp:meta_key>
<wp:meta_value><![CDATA[a:5:{s:5:“width“;i:3136;s:6:“height“;i:3920;s:4:“file“;s:35:“2015/01/4937214679_0da811ed8b_o.jpg“;s:5:“sizes“;a:7:{s:9:“thumbnail“;a:4:{s:4:“file“;s:35:“4937214679_0da811ed8b_o-150×150.jpg“;s:5:“width“;i:150;s:6:“height“;i:150;s:9:“mime-type“;s:10:“image/jpeg“;}s:6:“medium“;a:4:{s:4:“file“;s:35:“4937214679_0da811ed8b_o-240×300.jpg“;s:5:“width“;i:240;s:6:“height“;i:300;s:9:“mime-type“;s:10:“image/jpeg“;}s:5:“large“;a:4:{s:4:“file“;s:36:“4937214679_0da811ed8b_o-819×1024.jpg“;s:5:“width“;i:819;s:6:“height“;i:1024;s:9:“mime-type“;s:10:“image/jpeg“;}s:14:“shop_thumbnail“;a:4:{s:4:“file“;s:34:“4937214679_0da811ed8b_o-122×98.jpg“;s:5:“width“;i:122;s:6:“height“;i:98;s:9:“mime-type“;s:10:“image/jpeg“;}s:12:“shop_catalog“;a:4:{s:4:“file“;s:35:“4937214679_0da811ed8b_o-268×300.jpg“;s:5:“width“;i:268;s:6:“height“;i:300;s:9:“mime-type“;s:10:“image/jpeg“;}s:11:“shop_single“;a:4:{s:4:“file“;s:35:“4937214679_0da811ed8b_o-528×320.jpg“;s:5:“width“;i:528;s:6:“height“;i:320;s:9:“mime-type“;s:10:“image/jpeg“;}s:14:“post-thumbnail“;a:4:{s:4:“file“;s:35:“4937214679_0da811ed8b_o-672×372.jpg“;s:5:“width“;i:672;s:6:“height“;i:372;s:9:“mime-type“;s:10:“image/jpeg“;}}s:10:“image_meta“;a:11:{s:8:“aperture“;d:4;s:6:“credit“;s:0:““;s:6:“camera“;s:20:“Canon EOS 5D Mark II“;s:7:“caption“;s:0:““;s:17:“created_timestamp“;i:1282985970;s:9:“copyright“;s:0:““;s:12:“focal_length“;s:3:“187″;s:3:“iso“;s:3:“800″;s:13:“shutter_speed“;s:8:“0.003125″;s:5:“title“;s:0:““;s:11:“orientation“;i:1;}}]]></wp:meta_value>
</wp:postmeta>
</item>
</channel></rss>
Wichtig für die Vorgehensweise ist:
A) Der Beginn der XML-Datei bis vor dem ersten <item>-Tag muss erhalten bleiben.
B) Das Ende der XML-Datei mit </channel></rss> muss erhalten bleiben (das steht u. U. auch auf 2 Zeilen verteilt das ist nicht relevant)
C) Die Kommentarzeilen (beginnen mit <!– können ebenfalls gelöscht werden.
Jetzt können Sie mit einem beliebigen Text-Editor (z. B. Notepad 2 für sehr große Textdateien) die <item>-Tags auf mehrere Dateien verteilen, und so jede XML-Datei einzeln verarbeiten.
Praktischer ist das WP-CLI, das man ja auch für andere Aufgaben verwenden kann. Aber wer das von seinem Provider nicht bekommt, der muss die mühsame „Zerteilmethode“ verwenden.
Eine der beiden Methoden sollte sich auf jeden Fall auch bei Ihnen durchführen lassen.
Viel Erfolg und Viel Spaß mit Ihrem WordPress-Blog!
Rudolf Fiedler
Kommentare
WordPress-Werkzeuge-Import — Keine Kommentare
HTML tags allowed in your comment: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>