Использование Wordpress LOOP со страницами вместо сообщений?
Есть ли способ использовать THE LOOP в Wordpress для загрузки страниц вместо сообщений?
Я хотел бы иметь возможность запросить набор дочерних страниц, а затем использовать функции THE LOOP, такие как the_permalink()
и the_title()
.
Есть ли способ сделать это? Я ничего не видел в документации query_posts()
.
Ответы
Ответ 1
Да, это возможно. Вы можете создать новый объект WP_Query. Сделайте что-то вроде этого:
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
Дополнение. Существует множество других параметров, которые можно использовать с query_post. Некоторые, но, к сожалению, не все, перечислены здесь: http://codex.wordpress.org/Template_Tags/query_posts. Не менее post_parent
и более важные post_type
там не указаны. Я вырыл источники ./wp-include/query.php
, чтобы узнать об этом.
Ответ 2
Учитывая возраст этого вопроса, я хотел бы дать обновленный ответ для всех, кто наткнулся на него.
Я бы предложил избегать query_posts. Вот альтернатива, которую я предпочитаю:
$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();
Другой альтернативой может быть использование фильтра pre_get_posts, однако это применимо только в этом случае, если вам нужно изменить первичный цикл. Приведенный выше пример лучше, когда используется как вторичный цикл.
Дополнительная литература: http://codex.wordpress.org/Class_Reference/WP_Query