web-dev-qa-db-fra.com

Afficher un nombre différent de messages par page en fonction du contexte (par exemple, page d'accueil, recherche, archives)

Dans les paramètres de lecture, vous pouvez définir le nombre de publications affichées affectant le nombre de publications affichées dans tous les contextes. J'aimerais plutôt afficher un certain nombre de messages sur la page d'accueil et un nombre différent de messages sur des pages telles que des archives, des résultats de recherche, etc.

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

Je me suis rendu compte que je pouvais le faire en modifiant les fichiers de thème et en modifiant les paramètres de requête, mais je préférerais avoir un accès plus facile à une simple page de paramètres. Il y a longtemps, je suis tombé sur un plugin qui l'a fait, mais je ne peux pas le localiser maintenant.

Est-ce que quelqu'un connait un plugin pour faire ça, ou même une fonction que je pourrais mettre dans functions.php pour accomplir la même chose?

21
Doug

Je crois que la meilleure façon de faire cela dans un plugin est d'exécuter l'exemple de fonction suivant lorsque le hook d'action pre_get_posts est rencontré. L'objet $wp_query est disponible, ce qui signifie que vos balises conditionnelles sont disponibles, mais avant que WordPress ne les reçoive, cela signifie que vous modifiez les vars de requête avant l'exécution de la première requête, plutôt que d'ajouter une seconde requête, comme lorsque query_posts () est utilisé dans une requête. fichier de thème.

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');
23
kevtrout

vous pouvez faire une boucle personnalisée en utilisant query_posts, et spécifier le nombre de publications par is_home, is_archive, etc.

juste une simple déclaration if avec query_posts

0
chrismccoy