Bei einzelnem Beitrag statt Auszug kompletten Beitrag listen
Autor: René A. Da Rin,   Artikel erstellt: am 03.12.2018



Bei WordPress muss ich mich für die Startseite entscheiden ob ich eine Statische Seite oder die Liste der letzten Beiträge sehen will.

Das hier verwendete Theme ‘Appointment’ fügt über der Beitragsliste zusätzliche Inhalte ein, welche im Customizer erfasst werden. Ob die Beitragsliste in einer oder in mehreren Spalten dargestellt wird, ist ausser für das Layout nicht von Belang.

Ich hatte nun die Situation, dass ich auf der Startseiten ein ‘Wilkommen auf dieser Seite’, wir machen hier dies und das, bla bla bla… einfügen wollte, und darunter dann die letzten Beiträge. Dafür habe ich den Willkommensbeitrag oben angepinnt. Er wird also immer als erster Beitrag ganz oben angezeigt. Auch wenn er bereits älter ist und auf Grund der Begrenzung der Anzahl Beiträge auf der Startseite eigentlich raus fallen würde.

Funktioniert an sich schon ganz gut. Nur ein Problem gibt es, die Funktion der Auszüge. Das Theme zeigt auf der Startseite (auch in der Auflistung nach Kategorien oder Archiven) nur einen kurzen Auszug des Beitrags an. Besonders bei langen Beiträgen macht das die Listen sehr viel übersichtlicher. Und das Verwenden der Auszugs-Funktion gestaltet die Länge der Auszüge einheitlich. Soweit alles gut. Nur, der erste Beitrag, der Willkommensbeitrag, der soll jedoch komplett angezeigt werden.

Um den Inhalt eines Beitrages auszugeben, gibt es bei WordPress 2 Funktionen, the_content() und the_exerpt().

Bei the_content() wird der komplette Beitrag inkl. Textformatierungen und Bilder ausgegeben. So wie der Beitrag zur Darstellung erfasst worden ist. Bei the_exerpt() wird lediglich eine vorgegebene Anzahl an Zeichen ausgegeben, ohne Textformatierung und ohne Bilder.

Die Lösung heisst, der erste Beitrag, ‘Willkommen’, soll mittels the_content() ausgegeben werden, alle anderen Beiträge mit the_exerpt().

Dafür muss im Child-Theme die Stelle gefunden werden, welche für die Ausgabe zuständig ist. Hier muss nun das the_exerpt() ersetzt werden.

Die Funktion get_the_id() gibt die Post-ID eines Beitrags, aber auch einer Seite in verarbeitbarer Form zurück. Machen Sie nicht den Fehler und verwenden Sie the_id(). Diese Funktion liefert zwar auch die selbe ID, gibt sie aber immer auf dem Bildschirm aus. Und das wollen wir nicht.

An Stelle der ‘123’ im Codebeispiel verwenden Sie die ID des entsprechenden Beitrages. Zu finden ist die ID in der URL, wenn Sie den Beitrag editieren. Mit dem Plugin Reveal IDs können Sie sich die IDs auch in der Listenansicht der Beiträge/Seiten anzeigen lassen. Das macht Sinn, wenn Sie öfters mal die ID benötigen, sonst können Sie sich das Plugin aber auch sparen, dann sind die IDs nebensächlich. Das wird auch der Grund sein, weshalb diese Anzeige irgendwann mal aus dem Core entfernt wurde und jetzt ein Plugin dafür benötigt.

Der neue Code im Theme bewirkt jetzt, dass nur der Beitrag mit der ID 123 komplett ausgegeben wird, alle Anderen werden nur mit dem Auszug angezeigt.

Beim verwendeten Theme gibts aber auch noch einen Überlegungsfehler. Selbst wenn der Inhalt des Beitrages kürzer ist als der vorgesehene Auszug, so wird der Weiterlesen-Button IMMER angezeigt. Wenn es nichts zum weiterlesen gibt, halte ich den Button auch nicht für nötig. Beim Beitrag mit der ID 123 wird ja der komplette Beitrag angezeigt, da will ich keinen Weiterlesen-Button sehen. Also hab ich Diesen in eine weitert IF-Abfrage gepackt, sodass er bei diesem Beitrag nicht angezeigt wird.

Das Ergebnis ist zu sehen auf der Seite www.skull.name.

 

Reveal IDs

Schreibe eine Antwort

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.