2010-05-06 3 views
1

Я хочу перечислить все подстраницы только на одном уровне, хотя на одной конкретной странице. Я читал Function Reference/get pages и думал, что $pages = get_pages(array('child_of' => $post->ID, 'parent' => $post->ID)) ; сделает трюк, но он не работает. Он отображает все страницы на том же уровне, что и страница, на которую я вызываю этот код. Если я опускаю родительский вариант, я получу все страницы даже с подстраницами, которые я хочу. Но я хочу only подстраниц.получить только подстраницы

Вся функция подобна

function about_menu(){ 
    if (is_page('about')){ 

    $pages = get_pages(array('child_of' => $post->ID, 'parent' => $post->ID)) ; 
     foreach($pages as $page) 
     {  
     ?> 
      <h2><a href="<?php echo get_page_link($page->ID) ?>"><?php echo $page->post_title ?></a></h2> 
     <?php 
     } 
    } 
    } 

ниже скриншоты из в.ч. администратора и результатов. Шахта второй один

Screen shot from WP admin http://img687.imageshack.us/img687/6139/e2568e8ec2684e7aa1bb3d1.png и the result http://img269.imageshack.us/img269/2365/329c5097c78f4d3186a177c.png

+1

Что делает var_dump ($ post-> ID) выбрасывать? – choise

+0

@choise: NULL. Я думал, что это будет причиной, но я не знал, что с этим делать. – Radek

ответ

1

попробуйте добавить

global $post; 

непосредственно перед объявляю $ страниц.

+0

@choise: ты гений :-) он сделал трюк. Не могли бы вы рассказать мне, зачем это нужно? – Radek

+0

«петля» устанавливает эту глобальную переменную, проходя через эти сообщения. теперь вы можете получить доступ ко всем объектам из цикла с помощью этой переменной. (глобально для обзора) – choise

+0

Простите, о чем вы говорите? – Radek

2

wp_list_pages() Заканчивать. Я думаю, что эти настройки дадут вам то, что вы хотите.

<?php 
$args = array(
    'child_of'  => $post->ID, // current page 
    'depth'  => 1, // get children only, not grandchildren 
    'echo'   => 1, // print immediately when we call wp_list_pages 
    'sort_column' => 'menu_order', // sort by the menu_order parameter 
);  
?> 
<?php wp_list_pages($args); ?> 
+0

@artlung: он дал мне тот же результат, что и мой код – Radek

+0

Так что ваш код тоже работает, просто нужно использовать 'global $ post; ' – Radek

+0

Могу ли я получить возвращаемый массив функции post ID? не печатать список почтовых имен или почтовых имен? – Radek

Смежные вопросы