web-dev-qa-db-fra.com

Utiliser Wordpress LOOP avec des pages au lieu de publications?

Existe-t-il un moyen d'utiliser LA BOUCLE dans Wordpress pour charger des pages au lieu de publications?

Je voudrais pouvoir interroger un ensemble de pages enfants, puis utiliser LA BOUCLE la fonction l'appelle - des choses comme the_permalink() et the_title().

Y a-t-il un moyen de faire cela? Je n'ai rien vu dans la documentation de query_posts().

32
ashchristopher

Oui, c'est possible. Vous pouvez créer un nouvel objet WP_Query. Faites quelque chose comme ça:

query_posts(array('showposts' => <number_of_pages_to_show>, 'post_parent' => <ID of the parent page>, 'post_type' => 'page'));

while (have_posts()) { the_post();
    /* Do whatever you want to do for every page... */
}

wp_reset_query();  // Restore global post data

Addition : Il existe de nombreux autres paramètres qui peuvent être utilisés avec query_posts. Certains, mais malheureusement pas tous, sont répertoriés ici: http://codex.wordpress.org/Template_Tags/query_posts . Au moins post_parent et plus important post_type n'y figurent pas. J'ai fouillé les sources de ./wp-include/query.php pour en savoir plus.

55
Simon Lehmann

Étant donné l'âge de cette question, je voulais fournir une réponse mise à jour à tous ceux qui y tomberaient.

Je suggérerais d'éviter les query_posts. Voici l'alternative que je préfère:

$child_pages = new WP_Query( array(
    'post_type'      => 'page', // set the post type to page
    'posts_per_page' => 10, // number of posts (pages) to show
    'post_parent'    => <ID of the parent page>, // enter the post ID of the parent page
    'no_found_rows'  => true, // no pagination necessary so improve efficiency of loop
) );

if ( $child_pages->have_posts() ) : while ( $child_pages->have_posts() ) : $child_pages->the_post();
    // Do whatever you want to do for every page. the_title(), the_permalink(), etc...
endwhile; endif;  

wp_reset_postdata();

Une autre alternative serait d'utiliser le filtre pre_get_posts mais cela ne s'applique que dans ce cas si vous devez modifier la boucle primaire. L'exemple ci-dessus est meilleur lorsqu'il est utilisé comme boucle secondaire.

Pour en savoir plus: http://codex.wordpress.org/Class_Reference/WP_Query

19
Nathan Dawson