Custom Post Type Archive als Startseite anzeigen

WordPress bietet eine konfigurierbare Startseite. So kann man wählen, ob man die letzten Beiträge vom Typ „Post“ oder aber eine definierte Seite anzeigen möchte.

Ich hatte gerade den Fall, dass ich weder die letzten Beiträge noch eine definierte Seite anzeigen wollte, sondern stattdessen das Archiv eines Custom Post Types.

Das Anzeigen eines CPT-Archivs als Startseite unterstützt WordPress leider nicht so einfach. Helfen kann hier folgender Code, der beispielsweise der functions.php hinzugefügt wird:

<?php

function cpt_front_page($query)
{
    // Check for main query
    if (is_admin() || !$query->is_main_query()) {
        return;
    }

    global $wp;
    $front = false;

    // Check if latest posts are showing on the home page
    if (is_home() && empty($wp->query_string)) {
        $front = true;
    }

    // Check if a static page is set as home page
    if (($query->get("page_id") == get_option("page_on_front") && get_option("page_on_front")) || empty($wp->query_string)) {
        $front = true;
    }

    if ($front) {
        $query->set("post_type", "my_custom_post_type");
        $query->set("page_id", "");

        // Set properties to match an archive
        $query->is_page = 0;
        $query->is_singular = 0;
        $query->is_post_type_archive = 1;
        $query->is_archive = 1;
    }

    // Pagination fix
    if (get_query_var("paged")) {
        $paged = get_query_var("paged");
    } elseif (get_query_var("page")) {
        $paged = get_query_var("page");
    } else {
        $paged = 1;
    }
    $query->set("paged", $paged);
}

add_action("pre_get_posts", "cpt_front_page");

my_custom_post_type muss gegen den gewünschten Custom Post Type ersetzt werden. Anschließend zeigt WordPress das gewünschte CPT-Archiv als Startseite.

Wichtig ist in diesem Zuge auch der „Pagination Fix“ am Ende des Codes. Dieser sorgt dafür, dass die Blätter-Funktion korrekt funktioniert. Ohne diesen Fix werden immer wieder die gleichen Posts angezeigt.

Schreibe einen Kommentar