Um in WordPress »Custom Post Types« auf der Website anzuzeigen verwendet man meistens den sog. »WP Query«, da hier mit geringem Aufwand festgelegt werden kann, welche »Post Types« ausgegeben werden sollen. Für den Fall, dass ihr nicht »WP Query« nutzen möchtet oder könnt, zeigen wir euch in diesem Beitrag wie ihr den WordPress-Standard-Loop um Custom Post Types erweitern könnt.

WP-Loop um Custom Post Types erweitern

Der WordPress-Standard-Loop (»The Loop«) gibt standardmäßig keine Custom Post Types (CPTs) aus, sondern immer die Beiträge, die entsprechend der Template Hierarchie festgelegt wurden. Um den Standard-Loop um CPTs zu ergänzen, müsst ihr folgendes Snippet in die functions.php eures Themes oder in ein seitenspezifisches Plugin schreiben. Die gewünschten Custom Post Types tragt ihr kommasepariert in das array ein.

Meistens ist es gewünscht die Custom Post Types nur auf Übersichtsseiten, wie der »Home«-Seite oder in Archiven zusätzlich auszugeben. Diese Einschränkung erreicht ihr mit Hilfe der Conditional Tags »is_home()« und »is_archive()«.

Mit Hilfe der Aktion »pre_get_posts« wird nun der Loop um eure Custom Post Types erweitert.

<?php
function kb_add_post_types_to_loop($query) {
  if (!is_admin() && $query->is_main_query()) {
    if (is_home() || is_archive()) {
      $query->set('post_type', array('post', 'YOUR POSTTYPE 1', 'YOUR POSTTYPE 2'));
    }
  }
}

add_action('pre_get_posts','kb_add_post_types_to_loop');
?>

Möchtet ihr den Standard-Loop überall erweitern, denkt daran auch die Seiten »page« mit in das array zu schreiben.

Achtet immer darauf, dass ihr bei euren Loop-Anpassungen den Administrationsbereich mit Hilfe von »!is_admin()« ignoriert, um Fehler im Backend zu verhindern.

Geschrieben von Robert Menzel

Benutzerbild

Robert arbeitet als Frontend-Developer und Web-Designer bei kulturbanause. Zu seinen Aufgaben gehören die visuelle Gestaltung und die technische Umsetzung von Websites, eCommerce-Shops oder dessen Kombination. Besonders gerne übernimmt er die Entwicklung individueller und anspruchsvoller Websites mit umfangreichen ineinandergreifenden Funktionen, getreu dem Motto: »Der beste Lack bringt nichts, wenn die Maschine darunter nicht läuft.«

Feedback & Ergänzungen – 6 Kommentare

  1. Matthias
    schrieb am 23.08.2019 um 13:05 Uhr:

    Hallo Robert,

    vielen Dank für diese Anpassung des Loops. Hat mir gerade wirklich weitergeholfen.

    Ein kleiner „Fehler“ hat sich aber drin versteckt: Mit deiner Funktion werden Seiten (post type „page“) aus dem Loop geschmissen. Die Anpassung der Query sollte also lauten:

    $query->set(‚post_type‘, array(‚post‘, ‚page‘, ‚YOUR POSTTYPE 1‘, ‚YOUR POSTTYPE 2‘));

    …oder irre ich mich?

    Viele Grüße,
    Matthias

    Antworten
    • Robert Menzel
      schrieb am 26.08.2019 um 12:01 Uhr:

      Hallo Matthias,

      vielen Dank für deinen Kommentar.
      Wir haben den Artikel angepasst.

      Du hast natürlich vollkommen Recht, dass die Seiten auch berücksichtigt werden müssen. Jedoch würden diese dann auch auf Übersichtsseiten, wo man sie nicht unbedingt haben möchte erscheinen. Dieser Fall scheint uns recht unwahrscheinlich.

      Wir hoffen unsere Anpassungen am Artikel sind für dich so in Ordnung.

      Viele Grüße
      Robert

      Antworten
  2. Philipp
    schrieb am 27.02.2018 um 13:05 Uhr:

    Genau die Funktion nach der ich letztens gesucht habe.

    Wenn ich das jetzt etwas weiter spinnen will und nur die Custom Post Types einer bestimmten Kategorie haben will, wie sähe das aus?

    Viele Grüße

    Philipp

    Antworten
    • Robert Menzel
      schrieb am 01.03.2018 um 10:10 Uhr:

      Hallo Philipp,
      würdest du gerne in einer bestimmten Kategorie einen Custom Post Type hinzufügen oder den Standard-Loop um eine bestimmte Kategorie eines Custom Post Types ergänzen?

      Viele Grüße
      Robert

      Antworten
      • Philipp
        schrieb am 02.03.2018 um 14:48 Uhr:

        Hi Robert,

        der Standard-Loop soll Posts und Custom Post Types einer Custom Taxonomy ausgeben.

        Viele Grüße

        Philipp

      • Robert Menzel
        schrieb am 05.03.2018 um 11:28 Uhr:

        Hallo Philipp,
        an dieser Stelle würde ich den Standard-Loop durch einen WP_Query ersetzen. Hier hast du deutlich mehr Möglichkeiten in den Argumenten des Loops.

        Viele Grüße
        Robert

Kommentar zu dieser Seite

Wir freuen uns über Anregungen, Ergänzungen oder Hinweise zu Fehlern. Wir lesen jeden Eintrag, veröffentlichen aber nur, was den Inhalt sinnvoll ergänzt.

WordPress-Projekte mit kulturbanause

Wir wissen wovon wir reden. Wir setzen WordPress seit über 10 Jahren erfolgreich ein und realisieren maßgeschneiderte Websites auf Basis dieses großartigen CMS.

WordPress-Leistungsangebot →

Schulungen von kulturbanause

Wir bieten Seminare und Workshops zu den Themen Konzept, Design und Development. Immer up-to-date, praxisnah, kurzweilig und mit dem notwendigen Blick über den Tellerrand.

Übersicht Schulungsthemen →