Alle Beiträge von wp-entwickler

Wiki Artikel von der Wikimedia Syntax in ein WordPress-Format bringen

Die Wikipedia ist für Recherchezwecke, für Informationssuche und als Nachschlagwerk… unschlagbar.

Die Software hinter Wikipedia heißt Mediawiki, ist open source, gratis und kann von  jedem installiert werden.

Der große Nachteil von Mediawiki ist die Bedienung, das Medienhandling, Verlinkungen, Tagging/Kategorien usw.

All das kann WordPress viel viel viiiiiiiel besser.

Wir selbst haben in der Firma den Fehler gemacht, viel zu lange auf Mediawiki zu setzen.

Aber was mach ich nun, wenn ich meine ganze Dokumentation in einem eigenen Wiki hab, und das nach WordPress exportieren möchte?

Es gibt dafür nicht wirklich eine fixfertige Software, keine Plugins o.ä.

Mögliche Lösungsansätze dazu wären:

Pandoc

Vorgehensweise mit Pandoc

Mediawiki hat eine eigene Syntax, die Markdown ähnelt.

Hier ein Beispiel für Mediawiki Syntax:

Mediawiki Syntax in Action

Daraus wird:

So schaut die Mediawiki-Syntax schlussendlich formatiert im Frontend aus!

Konvertierung mit Pandoc

Pandoc ist eine Kommandozeilen Bibliothek, mit der man Texte und Dateien aus verschiedene Formate in verschiedene Formate exportieren kann.

Habe ich zb die Datei reisen.wiki, die in der Mediawikisyntax geschrieben ist, hilft mir folgender Befehl, wenn ich die Seite nach HTML umwandeln will.

pandoc -f mediawiki -t html5 -s reisen.wiki -o reisen.html

Mit -f mediawiki gebe ich das Eingabeformat an.

Mit -t html5 gebe ich das Ausgabeformat an.

Die Ausgangsdatei gebe ich durch reisen.wiki an.

Das Schreiben in eine HTML-Datei erreiche ich durch die Angabe von -o reisen.html

Will ich Wikimedia-Syntax nach Markdown bringen, dann wär dieser Befehl der passende:

pandoc -f mediawiki -t gfm -s reisen.wiki -o reisen.md

Der Parameter gfm gibt die auszugebende Syntax an. In dem Fall ist das GitHub-Flavored Markdown.

Ergebnis der Umwandlung mit Pandoc

Markdown ist es nun schlussendlich geworden!

Wir haben daher die Seiten von der Wikimedia-Syntax in das Markdown Format überführt.

Warum? Weil man damit keinen unnötigen Code hat und es für WordPress super Markdown-Plugins gibt.

Ursprünglich war die Idee, die Wikieinträge nicht zb nach Markdown umzuwandeln, sondern gleich in ein sauberes (saubereres) HTML. Das Ergebnis schaut dann aus wie in den folgenden Screenshots wobei zu beachten ist, dass das oben gezeigte Bild (rosarotes Österreich) nicht verlinkt ist, weil aus der Mediawiki-Syntax nur der Bildname im SRC des Image-Tags übrig bleibt.

 

Problem der Umwanldung nach HTML

Hat man in einem Wiki-Artikel zb Codeteile drin, die mit Codehighlighting sichtbar gemacht werden, wirds umständlich:

 

Umständlich, weil Pandoc freundlicherweise Css-Regeln einfügt.

Was grundsätzlich eh super ist, weil ich dann das Code-Highlighting im Export/in der umgewandelten HTML-Datei habe:

Das ist für die Weiterverwendung in WordPress aber suboptimal.

Weil ich dann im Beitragsinhalt/im Content CSS-Regeln habe, und die dort nicht hin gehören.

Alternativen

Man könnte den XML-Export vom Mediawiki verwenden. Dann braucht man auf WordPress-Seite einen Importer. Die XML-Exportdatei gefällt mir nicht so gut. Mit der Umwandlung in ein aufgeräumtes HTML von Pandoc kann ich die Inhalte gleich in den WordPress-Editor reinkopieren.

 

Markdown in WordPress

Mit diesem Markdown-Plugin https://wordpress.org/plugins/wp-githuber-md/ wird der Inhaltseditor angepasst und schaut dann so aus:

 

Auf der linken Seite hab ich den markdown formatierten Text, rechts das Ergebnis, das auch im Frontend angezeigt wird:

 

 

Links

Beitragsbild / Post Thumbnail mit der JSON API / WP API / REST API holen

Die Dokumentation der WP JSON API ist nach wie vor recht spärlich. Die JSON-API fühlt sich immer noch ein bisserl wie ein Stiefkind an, aus WordPress Entwickler Sicht.

Was ich nicht ganz verstehen kann, denn Gutenberg setzt verstärkt darauf.
Gutenberg ist der WordPress-Core eigene Pagebuilder, der stark auf JavaScript (React) setzt, und daher von einer JSON-API profitiert.

Das als kleiner Exkurs 🙂

Wir beschäftigen uns gerne mit der WP API, zb hier und hier.

Worum geht es in dem Artikel? Einfach! Post Thumbnails

Beitragsbild mit JSON API holen

Will ich ein Post Thumbnail mit einem JSON Call holen, hilft mir die WordPress Dokumentation wenig.

Mit ein wenig Recherche bei Github/im Codeverwaltungssystem wird man aber fündig:

Der Parameter

?_embed

rettet uns!

Hänge ich den Parameter an den JSON-Call, so bekomme ich weitere Daten, siehe:

https://wpaustria.at/wp-json/wp/v2/mein_post_type?_embed

 

Ich bekomme durch den angehängten Parameter umfangreiche Infos zum Beitragsbild zb auch die diversen URLS der verschiedenen Bildergrößen, dich ich für responsive Images brauche:

 

Alternativen

Es gibt ein paar Hooks, mit denen ich den JSON-Response ändern kann. Nur: Warum sollte ich mir die Arbeit machen, das per HOOK und PHP zu lösen? Es gibt sicher Anwendungsfälle, aber für eine schnelle Lösung ist das nix.

Es gäbe auch ein Plugin, wer PHP nicht angreifen kann:

Better REST API Featured Images

Links