2008-10-13 18 views
30

Có cách nào để sử dụng THE LOOP trong Wordpress để tải trang thay vì bài đăng không?Sử dụng Wordpress LOOP với các trang thay vì bài viết?

Tôi muốn để có thể truy vấn một tập hợp các trang con, và sau đó sử dụng THE LOOP chức năng kêu gọi nó - những thứ như the_permalink()the_title().

Có cách nào để thực hiện việc này không? Tôi không thấy gì trong tài liệu query_posts().

Trả lời

55

Có, điều đó là có thể. Bạn có thể tạo một đối tượng WP_Query mới. Làm một cái gì đó như thế này:

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: Có rất nhiều các thông số khác có thể được sử dụng với query_posts. Một số, nhưng tiếc là không phải tất cả, được liệt kê ở đây: http://codex.wordpress.org/Template_Tags/query_posts. Ít nhất post_parent và quan trọng hơn post_type không được liệt kê ở đó. Tôi đào các nguồn của ./wp-include/query.php để tìm hiểu về các nguồn này.

+0

Nếu đó là trang con của trang hiện tại bạn có thể sử dụng 'get_the_ID()' nếu bạn gọi trước 'the_post() '. – jezmck

15

Cho độ tuổi của câu hỏi này tôi muốn cung cấp câu trả lời cập nhật cho bất kỳ ai tình cờ gặp nó.

Tôi khuyên bạn nên tránh query_posts. Đây là lựa chọn thay thế tôi thích:

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

Một giải pháp thay thế khác là sử dụng bộ lọc pre_get_posts tuy nhiên điều này chỉ áp dụng trong trường hợp này nếu bạn cần sửa đổi vòng lặp chính. Ví dụ trên là tốt hơn khi được sử dụng như một vòng lặp thứ cấp.

Tiếp tục đọc: http://codex.wordpress.org/Class_Reference/WP_Query

Các vấn đề liên quan