NSC 2018 – Woche 3: Custom Post Types

Nachdem ich in der letzten Woche urlaubsbedingt ausgesetzt hatte, ging es diese Woche mit den Arbeiten an der Webseite weiter.

Zudem habe ich eine Entscheidung getroffen: Ihr werdet damit leben müssen, dass mein Keyword bzw. meine Seite noch eine ganze Weile geheim bleibt. Ich bin nicht der schnellste Projektierer und da in dem Keywordset so viel Potential steckt, würde ich mich schwarz ärgern, würde ich Copycats auf den Plan rufen.

Um euch weiter vernünftig über die Seite berichten zu können, werde ich meine Arbeiten an einem analogen Beispiel erklären: stellen wir uns also vor, die Seite würde das Thema „Bäume“ behandeln. Die Grundsätzliche Seitenstruktur ist dass es Hubseiten gibt (Obstbäume, Nadelbäume, Tropenbäume, etc). Jeder Baum hat dann eine einzelne Seite auf der standardisiert ein paar Daten vorhanden sind (maximale Höhe, maximales Alter, etc).

Warum benutze ich Custom Post Types?

Bei manchen Vorhaben auf meinen Seiten stoße ich mit der Standard-Wordpress-Struktur aus Seiten und Posts an meine Grenzen. Hier sind es zum Beispiel die Bäume, die einen einzelnen Post Type spendiert bekommen haben. So kann ich für diese Gruppe von Inhalten spezielle Einstellungen im Backend vornehmen, wie zum Beispiel besondere Felder abfragen, wie die oben genannte Maximalgröße.

Ein weiterer Custom Post Type (CPT) ist der „Baum des Tages“. Ich plane, für jeden Tag einen Baum zu finden, der für diesen Tag steht. Bei manchen ist das einfach, weil es spezielle „Namenstage“ gibt (Tag der Kirsche, Tag des Nadelholzes, etc), für andere Tage sind in meiner Liste noch viele Lücken vorhanden, die ich mit anderen Bäumen füllen muss, was ein wenig Kreativität bedarf.

Der Baum des Tages soll dann datumsgesteuert in der rechten Sidebar ausgegeben werden mit einem Bild des Baumes, dem Namen des Baumes und ggf. einem kleinen Anreißertext. Mal schauen, wie das läuft – später könnte ich mir vorstellen, dass die Seite zum Baum des Tages etwas umfangreicher wird und auch als Detail-Seite verlinkt wird.

Diese beiden Post Types hätten sich nur schwer als Seite oder Post anlegen lassen, ein CPT ermöglich mir also Daten getrennt zu verwalten und auf die Besonderheiten des Post Types besser einzugehen und mit speziellen Programmierungen auf sie einzugehen. Der Post-Type steuert hier auch das Aussehen der Einzelseiten. Jede Baum-Seite wird zunächst unter dem Header mit einem Bild des Baumes und der tabellarischen Auflistung der Daten beginnen. Dann beginnt der Inhaltsteil mit dem Content links und der Sidebar rechts.

Alle Daten werden übrigens in der Regel per CSV-Import befüllt. Das Plugin Really Simple CSV Importer leistet mir hier gute Dienste, da es auch Custom Fields (also eigene Inhaltselemente) befüllen kann. So kann ich mir Listen mit den Baumdaten in Excel (bzw. in Libre Office, da es mit UTF-8 besser zurecht kommt) anlegen und diese gesammelt in WordPress importieren. Super praktisch für solche Massenaufgaben. Der Really Simple CSV Importer stellt für diesen Zweck übrigens eine gute und kostenfreie Alternative zu WP All Import dar. Man muss nur darauf achten, dass CSVs komma-getrennt, als UTF-8 hochgeladen werden und die einzelnen Felder in Anführungszeichen gekapselt werden müssen.

Wie legt man Custom Post Types an?

Es gibt hier einmal den etwas umständlichen Weg per Handarbeit auf PHP-Ebene (bietet mehr direkte Einstellmöglichkeiten) oder den einfachen Weg per Plugin. Hier bietet sich das Plugin Custom Post Types UI an, mit dem du Custom Post Types und Custom Taxonomies (also so etwas wie Kategorien und Tags bei den Posts) im Handumdrehen selbst erstellen kannst.

Da mein Programmierer hier den Weg über die PHP-Ebene gegangen ist, müssen Änderungen (z.B. die Übersetzungen von „Add Tree“ zu „Baum hinzufügen“) per Hand im Child-Theme gemacht werden. Das ist nicht weiters schlimm, erfordert aber ein wenig Einarbeitungszeit, da ich nicht unbedingt WordPress-PHP-Profi bin.

Derzeit bin ich dabei die PHP-Klassen und Funktionen der Post-Types und weiterer Sonderprogrammierungen zu sortieren und übersichtlich im Child-Theme abzulegen, damit man auch bei steigender Komplexität noch durchsteigt. Neben der Definition des Post Types und der damit verbundenen Taxonomien findet sich dann dort auch die Änderung des Admin-Bereichs. Dort werden zusätzlich zu den Standard-Infos auch noch das Baum-Bild und die Baum-Art angezeigt.

Gibt es noch mehr Programmierungen auf der Seite?

Ja. Neben den Post Types mit ihren Taxonomien gibt es speziell gestaltete Übersichtsseiten auf der die Bäume je nach Zuordnung ausgewiesen werden. Diese sollen als Hub zu den Einzelseiten dienen. Oben werde ich vermutlich die Bilderliste aufführen und darunter einen Text zur jeweiligen Baum-Art schreiben (lassen?). So soll der Traffic zum Thema „Obstbäume“ schlussendlich dort landen und dann weiter verweisen.

Ich habe zwei Sidebar-Widgets geschrieben, die zum einen den Baum des Tages ausgeben und zum anderen die x beliebtesten Bäume anzeigen. Hier hat mein Programmierer Vorarbeit geleistet und einen Zählmechanismus geschrieben, der jeden Besucher auf einer Detailseite zählt. Diese Daten kann ich dann aus der Datenbank auslesen und ausgeben. Der Vorteil bei Custom Widgets ist, dass ich völlig frei in der Konfiguration bin. Das Favoriten-Widget ist zum Beispiel gewachsen. Zunächst war hier nur der Titel vorgesehen und die Anzahl der angezeigten Top-Bäume. Im Verlauf des Programmierens ist mir eingefallen, dass es cool wäre, wenn man man die Auswahl übersteuern könnte. So habe ich zwei Select-Boxen hinzugefügt, mit denen ich zwei Bäume auf Platz 1 und 2 setzen kann. Darunter folgen dann in diesem Beispiel die nächsten 3 meistbesuchten Bäume.

Fazit: Selbst wenn es fertige Plugins für diese Anforderungen gibt, werden diese selten so sein, wie ich sie gerne hätte. Hier ist es manchmal sinnvoller selbst Hand anzulegen, anstatt mit den Kompromissen zu leben.

Von meinem Programmierer habe ich mir eine intelligente Suche bauen lassen, die alle Felder durchsucht. Man wird also zum Beispiel nach Namen, Blattfarben, Baumarten usw. suchen können und immer die passenden Bäume angezeigt bekommen. Ich muss es vermutlich noch ein wenig umstricken und die Ergebnisseite nach meinen Vorstellungen anpassen, aber grundsätzlich ein cooles Feature.

Dass HTML und CSS an manchen Stellen individuell sind, erklärt sich von selbst.

Mein aktueller Status

Die Seite wächst und wächst. In der letzten Woche habe ich weitere Bäume importiert. Hier fehlen mir noch ein paar Bilder die ich über Photoshop erst als Mockup erstellen muss. Auch dies wird per Scripting erledigt, dazu benötige ich aber noch etwas freie Zeit, die ich mir bisher noch nicht nehmen konnte.

Die Bäume, die ich zum Start anbieten möchte sind zum großen Teil erfasst. Ein paar Bäume fehlen mir noch, da sie nicht in der vorliegenden Liste (aus Wikipedia) vorhanden waren. Hier werde ich händisch nacharbeiten und die restlichen Einträge erfassen.

Pläne für die nächste(n) Woche(n)

In der nächsten Woche will ich mit dem Baumimport soweit fertig sein. Ein paar Arbeiten muss ich noch machen, zum Beispiel tauchen manche Bäume in zwei Arten auf (sagen wir mal obsttragende Nadelgehölze). In der Programmierung war das so bisher nicht vorgesehen. Hier werde ich also ein weiteres Datenfeld einrichten und in der Liste abfragen müssen.

Ich muss noch an der Permalink-Struktur und davon abgeleitet an meinen Breadcrumbs arbeiten. Ich hätte gerne „domain.org/obstbaeume/kirsche“ als Permalink, wobei „obstbaeume“ aber auch der Permalink zu meiner Seite sein soll. Richte ich jetzt eine Taxonomie ein, funktioniert zwar die Permalink-Struktur wie ich will, aber „obstbaeume“ verweist auf das Archiv der Taxonomie. Ich vermute ich werde hier mit Rewrite Rules arbeiten müssen, davon habe ich aber bisher keine Ahnung.

Die Mockups für die Bäume müssen erstellt werden. Problem könnte hier sein, rauszufinden wie ich im Frühjahr die bisherigen Mockups gebaut habe – ich weiß noch, dass ich Photoshop-Scripting eingesetzt habe, aber dann hört es auch auf.

Die Baum des Tages Einträge müssen erstellt werden und zumindest bis zum Ende des Jahres vorgeplant sein. Es wird kein Drama sein, wenn sich Bäume wiederholen – ich rechne zum Start eher nicht mit wiederkehrenden Besuchern, denen das auffallen würde.

Fortschritt

Keywordanalyse und Planung
100% abgeschlossen
Einrichtung WordPress
85% abgeschlossen
Daten-Import
95% abgeschlossen
Baum des Tages bestücken
10% abgeschlossen
On-Page-SEO
5% abgeschlossen
Texte Hub-Pages
5% abgeschlossen
Off-Page-SEO / Linkbuilding
5% abgeschlossen
Texte Einzelseiten
5% abgeschlossen

Bilanz nach Woche 2

Ausgaben Einnahmen
Domain 1. Jahr 10,00€
Theme „Calibra“ 39,00€
Programmierung 600,00€
Summe -649,00€

4 Kommentare zu NSC 2018 – Woche 3: Custom Post Types

  1. Hallo Andre, das hört sich super spannend an. Wie kommen den diverse Plugins mit Custom Post den klar ? Musstest du ggf. deine übliche Auswahl abändern oder „gehn“ die über alle Post-Typen einfach drüber ?
    + für deine Entscheidung noch mit der Veröffentlichung des Themas zu warten – geht mir genauso

    • Bisher habe ich nichts negatives bemerkt.
      Wobei die Plugin-Auswahl an der ein oder anderen Stelle von meinem MH-Magazine-Standard abweicht.

  2. Hi Andre,

    ich habe eine Verständnisfrage zu deinen Breadcrumbs bzw. Permalinks. Genauer zu diesem Punkt: „domain.org/obstbaeume/kirsche“ , wobei „obstbaeume“ aber auch der Permalink zu meiner Seite sein soll. “

    Das verstehe ich nicht. Wenn sowohl eine Seite als auch eine Taxonomie „obstbaeume“ heißt, bekommst du in jedem Fall Probleme, selbst wenn dein Breadcrumb Script nur die URL ausliest. Einfacher wäre es, die Taxonomie-Templates anzupassen.

    Damit verzichtest du zwar auf eine entsprechende „Seite“ und erstellst, streng genommen, eine Kategorie – aber das fällt bei sauberer Pogrammierung des Templates gar nicht auf.

  3. Das mit dem Archiv lässt sich manuell lösen. Beim anlegen eines Post Type kann man über „has_archive“ angeben, ob der Post Type ein Archiv hat.

    Bei Taxonomien ist es eigentlich WP Standard das kein Archiv da ist. Vielleicht hat dein Programmierer oder das Plugin hier also schon was geändert.

    Fälls ich dir weiter helfen kann, schreib gerne.

    LG Julian

Kommentar hinterlassen

E-Mail Adresse wird nicht veröffentlicht.


*