Zeigen Sie je nach Kontext eine andere Anzahl von Beiträgen pro Seite an (z. B. Homepage, Suche, Archiv).
Frage
In den Leseeinstellungen gibt es Platz zum Festlegen der Anzahl der angezeigten Beiträge, die die Anzahl der in allen Kontexten gezeigten Beiträge beeinflussen. Ich möchte stattdessen eine bestimmte Anzahl von Beiträgen auf der Homepage und eine andere Anzahl von Beiträgen auf Seiten wie Archiv, Suchergebnisse usw. zeigen.
Mir ist klar, dass ich dies tun könnte, indem ich die Themendateien bearbeite und die Abfrageparameter dort ändern kann, aber ich würde es vorziehen, einen leichteren Zugriff auf eine einfache Einstellungsseite zu haben. Vor langer Zeit bin ich auf ein Plugin gestoßen, das dies getan hat, aber ich kann es jetzt nicht finden.
Kennt jemand ein Plugin, um dies zu tun, oder sogar eine Funktion, die ich in Funktionen einsetzen könnte, um dasselbe zu erfüllen?
Lösung
Ich glaube, der beste Weg, dies in einem Plugin zu tun, besteht darin, die folgende Beispielfunktion auszuführen, wenn der pre_get_posts
Action Hook wird angetroffen. Das $wp_query
Objekt ist verfügbar, dh Ihre bedingten Tags sind verfügbar. Bevor WordPress jedoch die Beiträge erhält, ändern Sie die Abfragevars vor der ersten Abfrage, anstatt eine zweite Abfrage hinzuzufügen, wie bei query_posts () in einer Themendatei verwendet wird .
function custom_posts_per_page($query) {
if (is_home()) {
$query->set('posts_per_page', 8);
}
if (is_search()) {
$query->set('posts_per_page', -1);
}
if (is_archive()) {
$query->set('posts_per_page', 25);
} //endif
} //function
//this adds the function above to the 'pre_get_posts' action
add_action('pre_get_posts', 'custom_posts_per_page');
Andere Tipps
Sie können eine benutzerdefinierte Schleife mit query_posts durchführen und die Anzahl der Beiträge nach IS_HOME, IS_ARCHIVE usw. angeben.
Nur eine einfache wenn auch zusammen mit query_posts
Zu dieser Frage hinzuzufügen. Weiß jemand
<?php
if ($_GET['new'] == 1)
{
include ( TEMPLATEPATH . '/newpage.php' );
exit;
}
?>
Mir ist klar, dass ich dies tun könnte, indem ich die Themendateien bearbeite und die Abfrageparameter dort ändern kann, aber ich würde es vorziehen, einen leichteren Zugriff auf eine einfache Einstellungsseite zu haben.
Im Interesse der Vollständigkeit fand ich das query_posts
kombiniert mit $query_string
Die Verkettung funktioniert gut.
Ich habe diesen Code in platziert index.php
(Mein Thema hat keine category.php) ...
<?php
if (!is_front_page()) {
query_posts($query_string . "&posts_per_page=20");
}
?>
Natürlich ist das, was wir hier tun, die interne Abfragezeichenfolge der Schleife zu ändern, Überschreiben Sie die Standardnummer der Beiträge pro Seite.
Es arbeitet für die Bereitstellung einer kleineren Liste von Beiträgen auf der Homepage, auf der ich vollständige Beiträge zeige, und eine viel größere Liste von Beiträgen überall sonst (Kategorien, nach Datum usw.), in denen ich nur Postzusammenfassungen zeige.
Bitte beachten Sie jedoch, dass im Gegensatz zur akzeptierten Antwort, Dadurch wird die Abfrage zweimal ausgeführt, Es ist also nicht so schön eine Lösung.