web-dev-qa-db-fra.com

Remplacer le nombre de messages par défaut à afficher pour une seule boucle?

Est-il possible de remplacer le nombre de messages de blog à afficher par page (comme défini dans les paramètres de lecture dans l'administrateur WordPress)? Je veux faire en sorte qu'une boucle personnalisée que j'utilise affiche un nombre illimité.

3
user1462

L'argument qui contrôle le nombre de publications affichées dans la requête est posts_per_page.

<?php query_posts( array( 
                         'post_type' => 'post',
                         'posts_per_page' => -1 ) 
      ); 
?>

A noter également qu’il existe un bogue dans la branche 3.0 qui empêche l’entier -1 d’afficher toutes les publications. Il est corrigé dans 3.1 mais une solution de contournement consisterait à utiliser un nombre très élevé au lieu de -1

voir:

http://core.trac.wordpress.org/ticket/15150

8
Chris_O

Bien sûr, modifiez la requête en ajoutant

<?php query_posts('post_type=post&numberposts=-1'); ?>

1
eileencodes

Eileen a raison, mais il vaut mieux utiliser des arguments comme un tableau <?php query_posts( array( 'post_type' => 'post', 'numberposts' => -1 ) ); ?>

1
Ashfame

J'ai eu le même problème. J'ai décidé d'ajouter une variable personnalisée, puis d'intercepter cette variable pendant pre_get_posts pour définir le post_per_page query_var:

function custom_query_vars_filter($vars) {
  $vars[] = 'post_per_page_override';
  return $vars;
}
add_filter( 'query_vars', 'custom_query_vars_filter' );


add_action( 'pre_get_posts', 'rc_modify_query_get_design_projects' );
function rc_modify_query_get_design_projects( $query ) {

if( $query->query_vars['post_per_page_override'] == '3') {
        $query->set('posts_per_page', '3');
    }
}

Ensuite, je suis allé encore plus loin et lui ai donné le montant exact que vous souhaitez afficher dans la requête personnalisée var:

function custom_query_vars_filter($vars) {
  $vars[] = 'post_per_page_override';
  return $vars;
}
add_filter( 'query_vars', 'custom_query_vars_filter' );


add_action( 'pre_get_posts', 'rc_modify_query_get_design_projects' );
function rc_modify_query_get_design_projects( $query ) {

if( $query->query_vars['post_per_page_override']) {
        $customPPPlimit = $query->query_vars['post_per_page_override'];
        $query->set('posts_per_page', $customPPPlimit);
    }
}

Travaillé pour moi ..

0
Ted