WordPress Entwickler für Programmierung Ihrer Webprojekte
WordPress Entwickler für Programmierung Ihrer Webprojekte
  • Start
  • Unser Angebot
  • Blog
  • Kontakt
Avatar (Thumbnail) zum Blogeintrag

Auf den Post Type im Archiv richtig zurückgreifen

Lyriker: marcel | 25. Dezember 2022

get_post_type get_queried_object is_post_type_archive

Im Custom Post Type Archiv ist get_post_type() nicht direkt verwendbar

Mittels get_post_type() ist es einfach den aktuellen Post-Typen zu erhalten und wird in der WordPress Entwicklung auch täglich eingesetzt.

So weit, so gut –  allerdings könnte man meinen, im Archiv der Posts können wir auch einfach auf den Post-Type mittels get_post_type() zugreifen.
Das funktioniert aber (nicht immer) so einfach und korrekt. Es kann leicht zu Fehlern in der Programmlogik führen.

    Inhalt auf dieser Seite:

  1. Im Custom Post Type Archiv ist get_post_type() nicht direkt verwendbar
  2. Leichte Fehlerquelle
  3. Wann liefert get_post_type() im Archiv den falschen Post-Typen zurück?
  4. Die Lösung
  5. Links

Leichte Fehlerquelle

Eine potenzielle Fehlerquelle ist die Verwendung von get_post_type() in Template-Parts.

Für „normale“ Seiten ist es durchaus valide einfach get_post_type() zu verwenden um den Post-Typen abzufragen.
Kommen diese Template-Parts aber später im Archiv zum Einsatz,  kann es leicht zu unnachvollziehbaren Fehlern kommen. Denn die Abfrage liefert dann, unter Umständen, den falschen Post-Typen zurück!

Telefon+436603100000
E-Mailsouri@wp-entwickler.at
AdresseWP-Entwickler
Safenauer-Straße 62,
8230 Hartberg

Wann liefert get_post_type() im Archiv den falschen Post-Typen zurück?

Wenn wir für den Custom Post Type noch keine Posts erstellt haben!

Denn die get_post_type() Funktion ruft die globale $post Variable auf und holt davon den Post-Typen.
Wenn aber noch keine Posts erstellt sind, kann auch die globale $post Variable nicht mit einem Post des Custom Types versehen sein.
Dann bekommen wir als Post-Typ nur „Seite“ zurück, obwohl wir uns im Archiv eines Custom Post Types befinden! Es empfiehlt sich dann auf andere Funktionen auszuweichen.

Die Lösung

Die Lösung bringt eine Kombination aus is_post_type_archive() und get_queried_object().

Mittels is_post_type_archive() können wir sicher stellen, dass wir uns im Custom Post Type Archiv befinden um dann über get_queried_object() den Post Typen zu erhalten. Diese Funktion liefert im Archiv ein WP_Post_Type Objekt zurück, auch wenn es noch keine Posts für das Archiv gibt!

Hier ein kurzer Code Snippet um beispielsweise den Namen des Custom Post Types zu holen:

if ( is_post_type_archive() ) {     $custom_post_type_name = get_queried_object()->name;  }

So können wir sicher stellen, dass wir auch im Archiv auf den richtigen Post Type zurückgreifen!

Links

  • https://developer.wordpress.org/reference/functions/get_post_type/
  • https://developer.wordpress.org/reference/functions/is_post_type_archive/
  • https://developer.wordpress.org/reference/functions/get_queried_object/
    • (Leider ist der alte wordpress.org Codex-Artikel nicht mehr online. Also die alte originale WordPress-Dokumentation. Wir haben da vor Jahren stark daran mitgearbeitet, diesen Codex auch auf Deutsch übersetzt. Für get_queried_object gibt es viele Fallstricke, die im Codex-Artikel dokumentiert wurden. Dies nur als kleinen Rant am Rande, vielleicht liest das ja jemand der WordPress-Entscheider und entscheidet sich, die alten Codex-Seiten als Archiv wider zur Verfügung zu stellen bzw die neuen Doku-Seiten auch übersetzbar zu machen. Hinweis bzw Disclaimer bzw Offenlegung:  Dieser Rant kommt nicht vom Autor dieses Artikels! )

Navigation

Start Unser Angebot Blog

Impressum & Kontakt

wp-entwickler.at wird betrieben von

  • wp-entwickler Rene Souri
  • UID: ATU60950509
  • Safenauer-Straße 62
  • 8230 Hartberg

Wir lieben WordPress und freuen uns, mit Ihnen ein Projekt entwickeln zu können!

  • Impressum
  • AGB

wp-entwickler.at ist eine indit.at Division