Zeigen Sie je nach Kontext eine andere Anzahl von Beiträgen pro Seite an (z. B. Homepage, Suche, Archiv).

wordpress.stackexchange https://wordpress.stackexchange.com/questions/21

  •  16-10-2019
  •  | 
  •  

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.

reading-settings-blog-pages-show-at-most-per-page

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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top