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

20

Dans les paramètres de lecture, il est possible de 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.

Je réalise que je pourrais 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 connaît un plugin pour le faire, ou même une fonction que je pourrais mettre dans functions.php pour accomplir la même chose?

    
posée Doug 11.08.2010 - 21:52

4 réponses

23

Je pense que la meilleure façon de faire cela dans un plugin est d'exécuter l'exemple de fonction suivant lorsque le hook pre_get_posts action 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 la première requête en cours d'exécution, plutôt que d'ajouter une deuxième requête comme lorsque query_posts () est utilisé dans un 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');
    
réponse donnée kevtrout 11.08.2010 - 23:08
0

vous pouvez créer une boucle personnalisée à l'aide de query_posts et spécifier le nombre de publications par is_home, is_archive, etc.

juste une simple instruction if avec query_posts

    
réponse donnée chrismccoy 11.08.2010 - 22:07
-1

Pour ajouter à cette question. Est-ce que quelqu'un sait comment déterminer post_per_page pour cette fonction function custom_posts_per_page ($ query) si vous ajoutez la nouvelle page à index.php comme ceci:

<?php
if ($_GET['new'] == 1) 
{
    include ( TEMPLATEPATH . '/newpage.php' );
    exit;
}
?>
    
réponse donnée glazsasha 20.01.2011 - 09:56
-1
  

Je réalise que je pourrais 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.

Par souci d’intégralité, j’ai constaté que les query_posts associés à la concaténation $query_string fonctionnaient bien.

J'ai placé ce code dans index.php (mon thème n'a pas category.php) ...

<?php 
if (!is_front_page()) { 
    query_posts($query_string . "&posts_per_page=20"); 
}
?>

Bien entendu, nous modifions la chaîne de requête interne de la boucle en remplaçant le nombre de publications par page par défaut .

C’est un régal de fournir une liste plus courte de messages sur la page d’accueil où je montre des messages complets et une liste beaucoup plus large de messages partout ailleurs (catégories, par date, etc.) où je ne montre que des résumés de messages.

Toutefois, veuillez noter que, contrairement à la réponse acceptée, la requête sera exécutée deux fois , ce qui en fait une solution moins intéressante.

    
réponse donnée Jeff Atwood 07.07.2011 - 01:25

Lire d'autres questions sur les étiquettes