WordPress: Mehrdimensionale Kategorien

WordPress bietet selbst in der aktuellen Version immer noch nicht die Möglichkeit, mehrdimensionale Kategorien anzulegen. Unter mehrdimensionale Kategorien versteht am übergeordnete Kategorien, die dann Kinder-Kategorien (Childs) unter sich gruppieren. WordPress legt die Kategorien alle in einer Ebene in der Tabelle wp_terms in einer Ebene ab. Gerade beim Umstieg von anderen Content-Management-Systemen (CMS) wie Drupal oder Typo3 wird man auf diese Möglichkeit nicht verzichten möchten.
Um mehrdimensionale Kategorien auch in WordPress zu erzeugen, bedient man sich am Einfachsten durch das Plugin „Folding Category List“. Dieses Plugin gibt Ihnen die Möglichkeit, solche mehrdimensionale Kategorien anzulegen.
Admin-EinstellungenInstallieren Sie zuerst das Plugin und aktivieren es. Gehen Sie danach unter EINSTELLUNGEN/FoCaL auf die Einstellungen des Plugins. Leider ist das Plugin nur auf Englisch zu haben. Diese Einstellungen müssen Sie jedoch nur einmal vornehmen. Passen Sie die „Individual Widgets“ sowie die SEO-Einstellungen individuell an.
Überprüfen Sie danach Ihr Design. Entfernen Sie zu erst das Kategorien-Widget Ihres bisherigen Designs. Das Plugin „Folding Category List“ bringt Ihnen ein eigenes Widget namens „FoCaL“ mit. Binden Sie dieses einfach durch anklicken mit der linken Maustaste und ziehen in Ihren Sidebar-Bereich ein. Lassen Sie das Widget durch loslassen der Maus „fallen“. Sie haben dann die Möglichkeit, durch anklicken („festheben“) und verschieben des Widgets, dieses in der Anzeigenreihenfolge zu verschieben.

Über das DropDown "Übergeordnet" legen Sie den Parent anNun überprüfen Sie die Kategorien bzw. legen neue an. Klicken Sie unter „Artikel“ auf „Kategorien“. Die werden sehen, dass es unterhalb der „Slug“-Textbox, die zur URL-Variante der Kategorien-Anzeige notwendig ist, eine Drop-Down-Box „Übergeordnet“ gibt. Wählen Sie nun eine Unterkategorie mit dem Link „Bearbeiten“ oder legen diese neu an. Wichtig ist, dass des die übergeordnete Kategorie bereits gibt (ansonsten wie gewohnt ohne eine Auswahl in der DropDown-Box „Übergeordnet“ anlegen). Geben Sie Ihrer Unterkategorie eine übergeordnete Kategorie mit.
Übergeordnete Kategorien müssen sie nicht explizit kennzeichnen. Per Default trägt jede Kategorie den Wert „keine“ im Feld „übergeordnet“.
Prüfen Sie nun, nachdem Sie drei oder vier Werte angepasst haben, das Ergebnis. Erscheint nun auf Ihrer Startseite die Hauptkategorie(n)? Wenn nein, prüfen Sie zuerst, ob Sie bereits Artikel in den entsprechenden Kategorien haben. WordPress zeigt nämlich per Standard keine leere Kategorien an.
Prüfen Sie danach noch mal unter „Einstellungen“ „FoCaL“ die Einstellungen. Hier können Sie zum Beispiel definieren, ob auch leere Kategorien angezeigt werden sollen. Ebenfalls beachten sollten Sie die „Global Settings“. Das Plugin „Folding Category List“ optimiert die Abfrage durch einen eigenen Cache. Diesen Cache sollten Sie unbedingt aktiviert lassen, da Sie dadurch einen Geschwindigkeitsvorteil haben. Überlegen sollten Sie sich, ob Sie die Checkbox im „Auto Rebuild Cache“ aktiviert lassen. Bei jeder Änderung an einem Artikel erstellt FoCaL den Cache für die Kategorien erneut. Da sich die Kategorien nur selten ändern, sollte diese Option meines Erachtens deaktiviert werden (Steigerung der Geschwindigkeit). Sie müssen nur daran denken, dass Sie den Cache neu erstellen (Button „Rebuild Cache“ unter dem Punkt „Enable Cache“ klicken), wenn sich Ihre Kategorien geändert haben. Ansonsten verweigert Ihnen FoCaL die Anzeige der neuen Kategorie.

WordPress Plugin WP-PDA auf Deutsch installieren

Die Zugriffe über mobile Browser werden immer häufiger. Grund genug, auch für diese Browser optimierte Seiten bereitzustellen. Wer seine Webseite mit dem Content Management System WordPress erstellt, kann dies mit der Installation eines einfachen Plugins erledigen.
Die Setup-Seite ist aufgeräumt: Es gibt nichts zu konfigurierenDas Angebot ist reichhaltig. Ich habe einige der kostenlosen Plugins getestet. Manche sind gut, manche weniger gut. Viele erfordern viel Arbeit bei der Installation oder bei der Konfiguration. Letztendlich habe ich mich für das Plugin WP-PDA entschieden, denn dieses Plugin ist einfach zu installieren (Standard) und muss nicht konfiguriert werden. Plug and Play sozusagen.

Doch einen Nachteil hat das Plugin. Es wird nicht auf Deutsch angeboten. Und das hat mich gestört. So sehr, dass ich mich mit Übersetzungstabellen, .mo und .po-Dateien und anderen Programmen beschäftigt habe. Nach viel herumprobieren, grauen Haaren und wüsten Flüchen, habe ich es geschafft. Das Plugin spricht auf dem mobilen Browser deutsch.

Ich stelle Euch hier die wp-pda Sprachdateien zum Download bereit. Geht wie folgt vor:

  1. Installiert über WordPress das Plugin WP-PDA. Aktuelle Version für diese Anleitung ist die 1.3.1. Die Sprachdateien sollten auch für folgende Versionen kompatibel sein.
  2. Ruft Eure Seite über einen mobilen Browser (Handy, PDA) auf. Ihr solltet nun Eure Seite aufbereitet über das Plugin sehen.
  3. Das Plugin hat zwei Templates. Es unterscheidet zwischen Aufrufen per PDA („pda-theme“) und Aufrufen durch mobile Browser („jqmobile-theme“), zu dem das IPhone, IPod sowie Android-Browser gehören.
  4. Die deutsche Sprachdatei für das PDA-Template könnt Ihr hier herunterladen. Kopiert diese über einen FTP-Browser in das Verzeichnis „/wp-content/plugins/wp-pda/pda-theme“ und benennt die Datei in „pda-theme-de_DE.mo“ um.
  5. Die deutsche Sprachdatei für das jqmobile-theme könnt Ihr hier herunterladen. Diese Datei bitte ebenfalls per FTP, allerdings in das Verzeichnis „/wp-content/plugins/wp-pda“ kopieren und ebenfalls umbenennen in „pda-theme-de_DE.mo“.
  6. Ein erneuter Aufruf Eurer WordPress-Seite sollte nun eine deutschsprachige Oberfläche zeigen.
  7. Ihr werdet sehen, dass zumindest in der Version 1.3.1 die Buttons unten weiterhin in englischer Sprache sind. Dies ist ein Fehler des Programmierers, denn er hat die Buttons nicht in eine Sprachdatei mit einbezogen. Ich habe den Entwickler darauf hingewiesen. Evtl. wird in einer neueren Version der Fehler behoben. Wenn die Buttons in deutscher Sprache erscheinen, könnt Ihr den Punkt hier abbrechen.
  8. Ladet die Datei single.php aus dem Ordner „/wp-content/plugins/wp-pda/jqmobile-theme“ auf Euren Rechner herunter und öffnet die Datei mit einem einfachen Texteditor (Windows: Notepad o.ä. KEIN Word oder eine andere Textverarbeitungssoftware!)
  9. Sucht die folgende Stelle:
    <?php previous_post_link('%link','Previous') ?>
    <?php next_post_link('%link','Next') ?>
  10. Ersetzt die Zeilen durch folgende:
    <?php previous_post_link('%link',__('Previous Page','pda-theme')) ?>
    <?php next_post_link('%link',__('Next Page','pda-theme')) ?>

    Ersetzt nun die Datei “single.php” auf Eurer WordPress-Installation auf dem Webserver.

  11. Das Plugin spricht jedoch noch immer nicht zu 100 Prozent deutsch. Diesmal ist es kein Fehler des Programmierers, sondern ein Problem des Frameworks, das der Programmierer nutzt. Basis des Webaufbaus ist das JQuery-Framework jquery.mobile-1.0a2.min.js von http://jquerymobile.com. Diese Datei wird automatisch bei jedem Seitenaufbau geladen. Und soweit ich weiß, gibt es das Framework nur auf Englisch. Die folgenden Modifikationen stehen meines Erachtens in keinem Verhältnis zum Aufwand, so dass die meisten Installationen damit leben sollen, dass es einen „Back“-Button und ein „loading“-Fenstern gibt. Wer dies noch beheben möchte, der kann die folgenden Schritte unternehmen.
  12. Ladet Euch das Framework unter „http://code.jquery.com/mobile/1.0a2/jquery.mobile-1.0a2.min.js“ herunter.
  13. Öffnet die Datei über einen Texteditor. Es handelt sich um komprimiertes JavaScript. Keine Sorge, Ihr müsst den Code nicht verstehen. Sucht mit Hilfe des Texteditors die Stelle „loadingMessage:“loading““ und „backBtnText:“Back““. Ersetzt die Worte innerhalb der Hochkommas. ACHTUNG: Nur die Worte ersetzen, keine Hochkommas löschen!
  14. Da das Framework bisher von http://jquerymobile.com geladen wurde, Ihr aber Änderungen vorgenommen habt, müsst Ihr diese Datei nun auf Euren Webserver lokal bereitstellen. Ladet die Datei auf Euer Web hoch.
  15. Schaut Euch die header.php-Dateien in den beiden Template-Ordner an. Passt die Zeile <script type=“text/javascript“ src=“http://code.jquery.com/mobile/1.0a2/jquery.mobile-1.0a2.min.js“></script> so an, dass der Link auf Eure modifizierte js-Datei zeigt.  Geschafft. Fertig sind die Änderungen.
  16. Nachteile der Modifikation des JQuery-Framework: Das Laden der Datei über das Web von jquerymobile.com hat zwei entscheidende Vorteile, die durch Eure Modifikation verloren gehen. Zum einen erspart Ihr Euch Traffic (und vielleicht auch Kosten), da die Datei jedes mal nicht von Eurem Server geladen wird. Ferner bekommt Ihr nicht mit, wenn die Entwickler die Datei ändern bzw. verbessern. Diese Nachteile haben allerdings auch Vorteile: Sollte mal der Webserver von jquerymobile offline sein, läuft Euer Web immer noch. Auch könnt Ihr sicher sein, dass Euer Web noch läuft, selbst wenn die Entwickler eine neu Version (mit neuem Namen/Link) veröffentlichen und diese Version von ihrem Webserver löschen. Wie bei allem gibt es zwei Seiten der Medaille…

WordPress Plugin auf deutsch übersetzen

WordPress ist eine wunderbares CMS. Und das wirklich wunderbare ist, dass es unzählige Plugins und Themes gibt, die größtenteils auch kostenlos angeboten werden. Doch was stört ist, dass nicht immer alles in deutscher Sprache bereitgestellt wird. WordPress an sich wird in einer deutschen Version bereitgestellt. Hier sind viele fleißige Hände am Werk, die dies bewerkstelligen (dies ist ein Lob!). Doch eben nicht alles, was man zusätzlich installieren möchte, ist in deutscher Sprache zu haben (siehe auch hier).

WordPress nutzt GetText für die Lokalisierung der Sprache. Wenn man sich an diesen Standard hält, können weitere Sprachen ohne Änderung des Quelltextes einfach durch hinzufügen einer weiteren Sprachdatei hinzugefügt werden. Als Basis dient die Einstellung der Sprache innerhalb von WordPress. Im Deutschen ist „de_DE“ voreingestellt. Somit versuchen sämtliche Komponenten, eine Sprachdatei zu finden, die diese Kodierung enthält. Wenn nicht, wird der „default“ der Komponente angezeigt.

So geht Ihr vor:
Zuerst muss ermittelt werden, ob der Programmierer überhaupt an eine Mehrsprachigkeit gedacht hat. Wenn die einzelnen Sprachfragmente „hardcoded“ im Text stehen, dann müsst Ihr diese mühsam Stelle für Stelle ändern. Ihr erhaltet dann eine eigene Version der Komponente, die mit jeder Veröffentlichung des ursprünglichen Programmierers automatisch veraltet ist. Also eine schlechte Methode.
Schaut in den Ordnern der Komponente nach, ob Ihr auf .mo-Dateien (Beispiel: „pda-theme-de_DE.mo“) stoßt. Dies ist ein erster Hinweis, dass der Programmierer an Mehrsprachigkeit gedacht hat. Allerdings sollte keine „de_DE.mo“ Datei zu finden sein. Denn wenn diese Datei vorhanden ist, die Komponente in einer anderen Sprache zu Euch spricht, dann ist was anderes faul ….
Gehen wir davon aus, dass andere Sprachen vorliegen. Dann schaut sicherheitshalber Euch mal eine PHP-Seite aus der Komponente an. Ihr solltet innerhalb des Codes auf Stellen wie

__('Edit','pda-theme');

oder

_e('by','pda-theme');

stoßen. Also Funktionen, die mit zwei Unterstrichen „__“ oder mit „_e“ beginnen. Dies bedeutet, dass hier eine Sprachdatei eingebunden wurde. Den Namen der Datei steht als zweiter Parameter innerhalb der Klammer. In diesem Beispiel ist es „pda-theme“. Der erste Parameter der Klammer (hier „Edit“ und „by“) ist der Text in Originalsprache.

Kurzer .mo und .po-Ausflug
Die mo-Datei (Machine Object) ist eine kompilierte Version der Sprachdatei. Dies ist Euer Ziel. Diese Datei kann im Prinzip nicht mehr geändert werden, sondern muss von Euch neu erzeugt werden. Ausgang Eurer Übersetzung ist eine Datei, die mit .po (oder .pot. – Portable Object Template – Template für tragbare Objekte) endet. Diese Datei könnt Ihr einmal mit einem Texteditor öffnen. Ihr entdeckt darin folgenden Aufbau:

#
#: archive.php:19
#: search.php:6
msgid "Search Results"
msgstr "Suchergebnisse"

Die MessageID („msgid“) bezeichnet die Textstelle (erster Parameter der Funktion „__“ oder „_e“) sowie den „msgstr“, also die Übersetzung. Wenn Ihr die „default.po“ findet, sollte der Message-String leer sein (msgstr „“), da ja noch keine Übersetzung in diesem Template vorhanden ist.
Theoretisch könnte man die Übersetzung schon jetzt via Texteditor vornehmen, doch wir brauchen eh ein spezielles Tool für die Erstellung der .mo-Datei. Daher von dieser Idee erst einmal Abstand nehmen.

Es ist keine .po oder .pot-Datei vorhanden
Nun, man kann dann beim Programmierer nachfragen. Oder man erstellt sich diese Datei selbst. Ich selbst habe unzählige Stunden googeln hinter mir, bis ich ein Tool gefunden habe, das diese Aufgabe erledigt. Und dies möchte ich Euch nicht vorenthalten. Es ist ein Online-Converter. Hier könnt Ihr einzelne Dateien, aber auch ein ganzes Projektverzeichnis konvertieren. Gerade letzteres ist wichtig, denn die wenigsten Plugins oder Templates bestehen nur aus einer Datei.

.po-Dateien übersetzen und .mo-Datei erstellen
Hier bemühen wir ein Tool, das den treffenden Namen poedit trägt. Dieses Tool einfach installieren und starten. Nach einigen selbsterklärenden Fragen habt Ihr die Möglichkeit, die .po-Datei zu laden. Nun kann jedes Wort oder Satzelement beliebig übersetzt werden (dies könnte man auch direkt in der Textdatei erledigen). Beim Speichern jedoch erstellt poedit automatisch die notwendige .mo-Datei.

Richtige Namensgebung
Geben Sie schon der .po-Datei, wenn Sie diese selbst erstellen, einen passenden Namen. Der Dateiname ist normalerweise wie folgt aufgebaut: Der erste Bestandteil des Dateinamen ist i.d.R. der Name des Komponente. Wenn weitere .mo-Dateien vorhanden sind, richten Sie sich an diesen Dateien. Wenn nicht, schauen Sie in den Quelltext der php-Dateien. Der zweite Parameter der „__“ und „_e“-Funktionen bestimmt den Namen der Datei. Es folgt ein „-„ und dann für die deustche Sprache ein „de_DE.mo“ bzw „.po“. Wenn Sie also in den php-Dateien den Funktionsaufruf „__(‚Edit‘,’pda-theme‘)“ finden, muss Ihre Datei mit „pda-theme“ starten. Der korrekte Dateiname lautet in unserem Beispiel: „pda-theme-de_DE.mo“

Wohin die .mo-Datei kopieren?
Wenn mehrere .mo-Dateien vorhanden sind, haben Sie es einfach: .mo-Dateien unterliegen einem „Gruppenzwang“ und sind ungern alleine … ? Also einfach zu den anderen Dateien hinzukopieren.
Wenn Sie diese Hilfe nicht haben, müssen Sie den php-Quelltext bemühen. Achten Sie auf den Funktionsaufruf „load_theme_textdomain“, also beispielweise:

load_theme_textdomain('pda-theme');

Sie müssen sich an diesen Aufruf halten (oder das Projekt entsprechend anpassen. Weitere Hinweise und Beispiele zu load_ theme_textdomain erhalten Sie bei wordpress.org.