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

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

  •  16-10-2019
  •  | 
  •  

Question

Dans les paramètres de lecture, il y a lieu de fixer le nombre de postes montré que affecte le nombre de postes indiqués dans tous les contextes. Je voudrais montrer à la place un certain nombre de postes sur la page d'accueil, et un nombre différent de messages sur les pages comme des archives, des résultats de recherche, etc.

lecture-settings-blog-pages-show-à-plus par page

Je me rends compte que je pouvais le faire en éditant les fichiers de thème et de modifier les paramètres de la requête, mais je préférerais avoir plus facilement accès à la page d'un simple. Il y a longtemps, je suis tombé sur un plugin qui a fait cela, mais je ne trouve pas maintenant.

Quelqu'un sait-il d'un plug-in pour ce faire, ou même une fonction que je pourrais mettre en functions.php pour accomplir la même chose?

Était-ce utile?

La solution

Je crois que la meilleure façon de le faire dans un plug-in est d'exécuter la fonction exemple suivant lorsque le crochet d'action pre_get_posts est rencontrée. L'objet $wp_query est disponible, qui signifie que vos balises conditionnelles sont disponibles, mais avant WordPress obtient les messages, ce qui signifie que vous modifiez requête vars avant la première requête en cours d'exécution, plutôt que d'ajouter est utilisé une deuxième requête comme quand query_posts () dans un fichier 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');

Autres conseils

vous pouvez faire une boucle personnalisée à l'aide query_posts et spécifier le nombre de messages de is_home, is_archive, etc.

une simple instruction if avec query_posts

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

<?php
if ($_GET['new'] == 1) 
{
    include ( TEMPLATEPATH . '/newpage.php' );
    exit;
}
?>
  

Je me rends compte que je pouvais le faire en éditant les fichiers de thème et de modifier les paramètres de la requête, mais je préférerais avoir plus facilement accès à une page de paramètres simples.

Dans l'intérêt de l'exhaustivité, je trouve que query_posts combiné avec concaténation de $query_string fonctionne bien.

Je mis 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 sûr, ce que nous faisons ici est de modifier la chaîne de requête interne de la boucle, remplaçant le nombre par défaut de messages par page .

Il fonctionne un régal pour fournir une plus petite liste des messages sur la page d'accueil où je montre les messages pleins, et une liste beaucoup plus de messages partout ailleurs (catégories, par date, etc.) où je ne participe qu'à des résumés de poste.

Cependant, s'il vous plaît faire noter que contrairement à la réponse acceptée, cela exécuté deux fois la requête , donc il est pas aussi bien une solution.

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top