Ich möchte ein benutzerdefiniertes Post-Archiv als Startseite für eine Site verwenden
http://the_site.com/
wird ein benutzerdefiniertes Posttyp-Archiv entsprechend meiner archive-{post-type}.php
Datei angezeigt .
Idealerweise möchte ich die Abfrage mit is_front_page()
in meiner functions.php
Datei ändern . Ich habe Folgendes versucht, mit einer Seite namens "Home" als Startseite:
add_filter('pre_get_posts', 'my_get_posts');
function my_get_posts($query){
global $wp_the_query;
if(is_front_page()&&$wp_the_query===$query){
$query->set('post_type','album');
$query->set('posts_per_page',-1);
}
return $query;
}
Die Startseite gibt jedoch den Inhalt von "Home" zurück und scheint die benutzerdefinierte Abfrage zu ignorieren.
Was mache ich falsch? Gibt es im Allgemeinen einen besseren Weg, dies zu tun?
Antworten:
Nachdem Sie eine statische Seite als Startseite festgelegt haben, können Sie diese zu Ihrer hinzufügen
functions.php
und loslegen. Dadurch wird diearchive-POSTTYPE.php
Vorlage ebenfalls korrekt aufgerufen .quelle
if(is_admin()) return;
am Anfang stehen, sonst versaut sie den Admin-Bereich.Benennen Sie Ihr CPT-Archiv in home.php um
Verwenden Sie dann pre_get_posts, um die Homepage-Abfrage so zu ändern, dass nur die CPT-Anzeige erfolgt
Ersetzen Sie your-cpt durch den Namen Ihres benutzerdefinierten Beitragstyps.
quelle
Vielen Dank für die Antwort, ljaas - ich wollte genau dieses Problem lösen. Um die benutzerdefinierte Archivvorlage für Beitragstypen aufzurufen, musste ich die folgenden Bedingungen hinzufügen:
quelle
Dies funktioniert besser, wenn ich sowohl Blogeinträge als auch statische Seiten in Einstellungen> Lesen> Anzeigen der Startseite überschreibe:
Ich verwende es in Verbindung mit einer Vorlagenüberschreibung, indem ich die Filter verwende
front_page_template
undhome_template
eine benutzerdefinierte Vorlage zurückgebe.quelle
Für mich bricht es die Paginierung: Entweder Sie wählen den Index oder eine statische Seite als Startseite, die Paginierungslinks werden angezeigt, aber wenn Sie auf Seite 2 klicken, erhalte ich:
Ich denke, es braucht einige Regeln zum Umschreiben, um das ausgelagerte Argument abzufangen und es richtig zu übergeben.
Auf jeden Fall sollte eine benutzerdefinierte Vorlagenseite die Lösung mit einigen zusätzlichen Umschreiberegeln sein.
quelle