32 votes

Utiliser Wordpress LOOP avec des pages au lieu de messages ?

Y a-t-il un moyen d'utiliser LA BOUCLE en Wordpress pour charger les pages au lieu des messages ?

J'aimerais pouvoir interroger un ensemble de pages enfant, puis utiliser la fonction LA BOUCLE des appels de fonction, par exemple the_permalink() y the_title() .

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

56voto

Simon Lehmann Points 5442

Oui, c'est possible. Vous pouvez créer un nouvel objet WP_Query. Fais 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 y a beaucoup d'autres paramètres qui peuvent être utilisés avec query_posts. Certains, mais malheureusement pas tous, sont listés ici : http://codex.wordpress.org/Template_Tags/query_posts . Au moins post_parent et plus important encore _post_type_ n'y figurent pas. J'ai fouillé dans les sources de ./wp-include/query.php pour en savoir plus.

20voto

Nathan Dawson Points 3795

Étant donné l'ancienneté de cette question, j'ai voulu fournir une réponse actualisée à toute personne qui tomberait dessus.

Je suggère 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 ; cependant, cela ne s'applique dans ce cas que 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X