2013-06-12 2 views
0

В настоящее время работает этотПоказать 2 уровня в глубину WP_Query?

$args = array(
    'post_type'  => 'page', 
    'posts_per_page' => 1, 
    'post_parent'  => 1743,  
    'meta_query'  => array(
     array(
      'key'  => 'sticky', 
      'value' => '1', 
      'compare' => '==' 
     ) 
    ) 
); 

$the_query = new WP_Query($args); 

У меня есть страницы вложенный-глубоко в post_parent, но это только тянет на один уровень. Любой способ распространить его на подстраницы ниже непосредственных детей?

ответ

0

Я не пробовал это, но он должен работать: пока вы находитесь в Loop, для каждого из сообщений второго уровня (т. Е. Прямых детей, которые вы в настоящее время можете достичь), захватите текущую запись ID, как так

$level2_parent_ID = $post->ID; 

Затем с помощью WP_Query, чтобы начать запрос в запросе, используя $ sub_parent_ID в качестве значения для post_parent. Это должно поднять детей детей.

В качестве примера, чтобы продолжить, где вы остановились ...

$the_query = new WP_Query($args); 
// The Loop 
if ($the_query->have_posts()) { 
    while ($the_query->have_posts()) { 
     $the_query->the_post(); 
     echo '<li>' . get_the_title() . '</li>'; 
      $level2_parent_ID = $post->ID; 
      $level2_args = array(
       'post_type'  => 'page', 
       'posts_per_page' => 1, 
       'post_parent'  => $level2_parent_ID,  
       'meta_query'  => array(
        array(
         'key'  => 'sticky', 
         'value' => '1', 
         'compare' => '==' 
        ) 
       ) 
      ); 

      $level2_query = new WP_Query($level2_args); 
      // The Loop-within-a-loop 
       if ($level2_query->have_posts()) { 
       while ($level2_query->have_posts()) { 
       $level2_query->the_post(); 
       echo '<li>' . get_the_title() . '</li>'; 
       } 
       } 
      //plus whatever else you want to do in the outer loop 
    } 
} 
/* Restore original Post Data */ 
wp_reset_postdata(); 
Смежные вопросы