Использование Wordpress LOOP со страницами вместо постов? - PullRequest
32 голосов
/ 13 октября 2008

Есть ли способ использовать ПЕТЛЯ в Wordpress для загрузки страниц вместо сообщений?

Я бы хотел иметь возможность запросить набор дочерних страниц, а затем использовать вызовы функции LOOP - такие вещи как the_permalink() и the_title().

Есть ли способ сделать это? В документации query_posts() я ничего не видел.

Ответы [ 2 ]

55 голосов
/ 13 октября 2008

Да, это возможно. Вы можете создать новый объект 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_posts. Некоторые, но, к сожалению, не все, перечислены здесь: http://codex.wordpress.org/Template_Tags/query_posts. По крайней мере post_parent и, что более важно, post_type там не перечислены. Я порылся в источниках ./wp-include/query.php, чтобы узнать об этом.

19 голосов
/ 13 февраля 2014

Учитывая возраст этого вопроса, я хотел бы дать обновленный ответ всем, кто на него наткнулся.

Я бы предложил избегать 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...