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.