{"id":909,"date":"2018-02-25T12:09:38","date_gmt":"2018-02-25T11:09:38","guid":{"rendered":"http:\/\/evileu.de\/zum-schwarzen-pinguin\/?p=909"},"modified":"2018-02-25T14:19:09","modified_gmt":"2018-02-25T13:19:09","slug":"jetzt-gilts-rezepte-aus-wordpress-importieren","status":"publish","type":"post","link":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/2018\/02\/25\/jetzt-gilts-rezepte-aus-wordpress-importieren\/","title":{"rendered":"Jetzt gilt&#8217;s: Rezepte aus WordPress importieren"},"content":{"rendered":"<p>Ich hab mir meine Tabelle mit den Rohdaten mal mit so etwa 30 Rezepten geladen, die sieht jetzt so aus:<\/p>\n<div id=\"attachment_910\" style=\"width: 811px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-910\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-910\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/rohdaten_screenshot.jpg\" alt=\"rohdaten_screenshot\" width=\"801\" height=\"459\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/rohdaten_screenshot.jpg 801w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/rohdaten_screenshot-300x172.jpg 300w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/rohdaten_screenshot-768x440.jpg 768w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/rohdaten_screenshot-624x358.jpg 624w\" sizes=\"(max-width: 801px) 100vw, 801px\" \/><p id=\"caption-attachment-910\" class=\"wp-caption-text\">rohdaten_screenshot<\/p><\/div>\n<p>Eigentlich brauchen wir nur die Felder titel und content, den URLsafe name k\u00f6nnen wir auch mit einer eingebauten Joomla-Funktion aus dem titel erzeugen:<\/p>\n<p>$akt_name =JFilterOutput::stringURLSafe($akt_titel);<\/p>\n<p>Aber das ist reine Geschmackssache. Jedenfalls wird die Foreach-Schleife jetzt ordentlich aufgebohrt, da kommt erstmal die Logik f\u00fcr die Belegung des JTable-Objekts rein. Meine drei Felder hab ich mir vorher nat\u00fcrlich auf Variable gelegt, ist \u00fcbersichtlicher.<\/p>\n<h2>JTable-Objekt erzeugen, f\u00fcllen und mit Insert wegschreiben<\/h2>\n<p><em>$article = JTable::getInstance(&#8218;content&#8216;);<\/em><\/p>\n<p><em>$article-&gt;title\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = $akt_titel;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$article-&gt;alias\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = $akt_name;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$article-&gt;introtext\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = $text;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$article-&gt;catid\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = 8;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$article-&gt;created\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = JFactory::getDate()-&gt;toSQL();<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/$article-&gt;created_by_alias = &#8218;Super User&#8216;;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$article-&gt;created_by = 839;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$article-&gt;state\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = 1;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$article-&gt;access\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = 1;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$article-&gt;metadata\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = &#8218;{&#8222;robots&#8220;:&#8220;&#8220;,&#8220;author&#8220;:&#8220;&#8220;,&#8220;rights&#8220;:&#8220;&#8220;,&#8220;xreference&#8220;:&#8220;&#8220;}&#8216;;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$article-&gt;language\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = &#8218;*&#8216;;<\/em><\/p>\n<p>Dann fehlt nur noch die Logik zum Wegschreiben des bef\u00fcllten Objekts, die hab ich aus dem Codebeispiel hier \u00fcbernommen:<\/p>\n<p><a href=\"https:\/\/stackoverflow.com\/questions\/12643725\/create-a-joomla-article-programatically?lq=1\">https:\/\/stackoverflow.com\/questions\/12643725\/create-a-joomla-article-programatically?lq=1<\/a><\/p>\n<p>Das sieht dann recht \u00fcbersichtlich so aus:<\/p>\n<p><em>\/\/ Check to make sure our data is valid, raise notice if it&#8217;s not.<\/em><\/p>\n<p><em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (!$article-&gt;check()) {<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0JError::raiseNotice(500, $article-&gt;getError());<\/em><\/p>\n<p><em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return FALSE;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}<\/em><\/p>\n<p><em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ Now store the article, raise notice if it doesn&#8217;t get stored.<\/em><\/p>\n<p><em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (!$article-&gt;store(TRUE)) {<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0JError::raiseNotice(500, $article-&gt;getError());<\/em><\/p>\n<p><em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return FALSE;<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}<\/em><\/p>\n<p>Das war schon die ganze Mechanik! Jetzt m\u00fcssen wir nur noch die where-Klausel aus dem Select rausnehmen, die liest sich dann ganz einfach so:<\/p>\n<p><em>$query = &#8222;SELECT * FROM 00_rohdaten;&#8220;;<\/em><\/p>\n<p>Damit steppt unsere Foreach-Schleife brav durch alle Zeilen der Tabelle rohdaten durch und legt die neuen Artikel an. Kurzer Blick in die Beitrags\u00fcbersicht:<\/p>\n<div id=\"attachment_911\" style=\"width: 880px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-911\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-911\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/neue_rezepte_screenshot.jpg\" alt=\"neue_rezepte_screenshot\" width=\"870\" height=\"502\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/neue_rezepte_screenshot.jpg 870w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/neue_rezepte_screenshot-300x173.jpg 300w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/neue_rezepte_screenshot-768x443.jpg 768w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/neue_rezepte_screenshot-624x360.jpg 624w\" sizes=\"(max-width: 870px) 100vw, 870px\" \/><p id=\"caption-attachment-911\" class=\"wp-caption-text\">neue_rezepte_screenshot<\/p><\/div>\n<p>Na bitte, da sind sie ja alle!\u00a0 Auch im Modul &#8222;Die neuesten Rezepte&#8220;:<\/p>\n<div id=\"attachment_912\" style=\"width: 907px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-912\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-912\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/die_neuesten_rezepte.jpg\" alt=\"die_neuesten_rezepte\" width=\"897\" height=\"505\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/die_neuesten_rezepte.jpg 897w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/die_neuesten_rezepte-300x169.jpg 300w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/die_neuesten_rezepte-768x432.jpg 768w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/die_neuesten_rezepte-624x351.jpg 624w\" sizes=\"(max-width: 897px) 100vw, 897px\" \/><p id=\"caption-attachment-912\" class=\"wp-caption-text\">die_neuesten_rezepte<\/p><\/div>\n<p>Die haben jetzt nat\u00fcrlich alle dasselbe Datum, n\u00e4mlich heute, aber das anzupassen w\u00e4re jetzt schon Feinarbeit. Man k\u00f6nnte nat\u00fcrlich versuchen, das Erstellungsdatum aus WordPress zu \u00fcbernehmen, das geht sicher auch, aber ich lass es jetzt mal gut sein. Noch ein kurzer Blick auf das alphabetische Inhaltsverzeichnis:<\/p>\n<div id=\"attachment_913\" style=\"width: 593px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-913\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-913\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/ivz_screenshot.jpg\" alt=\"ivz_screenshot\" width=\"583\" height=\"587\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/ivz_screenshot.jpg 583w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/ivz_screenshot-150x150.jpg 150w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/ivz_screenshot-298x300.jpg 298w\" sizes=\"(max-width: 583px) 100vw, 583px\" \/><p id=\"caption-attachment-913\" class=\"wp-caption-text\">ivz_screenshot<\/p><\/div>\n<p>Alles OK, wir haben alles.<\/p>\n<h2>Fazit und Ausblick<\/h2>\n<p>So schlimm war das doch jetzt gar nicht, oder? Ich gebe zu, mit den Rohdaten aus dem Inselfischkochbuch war die Bereinigungsaktion vor dem Import recht einfach, einfach weil die Rezepte in den meisten F\u00e4llen aus sehr straightem HTML-Code bestehen, und den kann man mit wenig Modifikationen nach Joomla \u00fcbernehmen.<\/p>\n<p>Was mich aber noch ein bisschen fuchst: meine sch\u00f6nen Kategorien aus WordPress sind nat\u00fcrlich futsch, und ich hab eigentlich keine Lust, bei \u00fcber 300 Rezepten die Kategorien nachtr\u00e4glich als Tags (Schlagworte) manuell einzuf\u00fcgen. Erinnern sie sich, ich hatte <a href=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/2018\/02\/03\/von-rezeptkategorien-zur-schlagwortliste\/\">in diesem Beitrag<\/a> meine WordPress-Kategorien als Schlagwortliste nach Joomla abgebildet. Das hatte soweit funktioniert, weil ich in WordPress keine verschachtelten Kategorien benutzt habe, keine ideale L\u00f6sung, aber besser als nix. Mal schauen, ob mir dazu noch was einf\u00e4llt. Aber wir machen hier jetzt erstmal eine wohlverdiente Pause!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich hab mir meine Tabelle mit den Rohdaten mal mit so etwa 30 Rezepten geladen, die sieht jetzt so aus: Eigentlich brauchen wir nur die Felder titel und content, den URLsafe name k\u00f6nnen wir auch mit einer eingebauten Joomla-Funktion aus dem titel erzeugen: $akt_name =JFilterOutput::stringURLSafe($akt_titel); Aber das ist reine Geschmackssache. Jedenfalls wird die Foreach-Schleife jetzt [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[29,25,37,20,4,2],"tags":[],"_links":{"self":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/909"}],"collection":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/comments?post=909"}],"version-history":[{"count":2,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/909\/revisions"}],"predecessor-version":[{"id":915,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/909\/revisions\/915"}],"wp:attachment":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/media?parent=909"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/categories?post=909"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/tags?post=909"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}