2008-10-13 15 views
30

¿Hay alguna manera de usar THE LOOP en Wordpress para cargar páginas en lugar de publicaciones?¿Usar el LOOP de Wordpress con páginas en lugar de publicaciones?

Me gustaría ser capaz de consultar un conjunto de páginas secundarias, y luego usar EL BUCLE función llama en él - cosas como the_permalink() y the_title().

¿Hay alguna manera de hacerlo? No vi nada en la documentación de query_posts().

Respuesta

55

Sí, eso es posible. Puede crear un nuevo objeto WP_Query. Hacer algo como esto:

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 

adición: Hay una gran cantidad de otros parámetros que pueden ser utilizados con query_posts. Algunos, pero desafortunadamente no todos, se enumeran aquí: http://codex.wordpress.org/Template_Tags/query_posts. Al menos post_parent y más importante post_type no figuran en esta lista. Busqué en las fuentes de ./wp-include/query.php para obtener más información.

+0

Si se trata de niños páginas de la página actual se puede usar 'get_the_ID()' si usted ha llamado previamente 'the_post()'. – jezmck

15

Dada la edad de esta pregunta, quería proporcionar una respuesta actualizada para cualquier persona que se tropiece con ella.

Sugeriría evitar query_posts. Aquí está la alternativa Prefiero:

$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(); 

Otra alternativa sería utilizar el filtro pre_get_posts sin embargo, esto sólo se aplica en este caso si es necesario modificar el circuito primario. El ejemplo anterior es mejor cuando se usa como un bucle secundario.

Más información: http://codex.wordpress.org/Class_Reference/WP_Query

Cuestiones relacionadas