2013-08-22 3 views
0

У меня есть навигационная структура, как это:Список детские страницы, если их нет, в этом случае, список двойников страниц в WordPress

  • Главная
  • О
    • Команда
    • Наша Миссия
  • Местоположение
    • Чикаго
    • Нью-Йорк
    • Лос-Анджелес
  • Услуги
  • Контакты

Если я смотрю на О странице, я хочу боковую панель для отображения:

  • Команда
  • Наша миссия

Если я смотрю на странице Службы, я хочу врезку на дисплее:

  • дома
  • О
  • Местоположение
  • Услуги
  • Контакты

Это код, который я использую сейчас. Как я могу изменить его так, чтобы он работал так, как я хочу?

<?php 
    global $wp_query; 
    if(empty($wp_query->post->post_parent)) { 
     $parent = $wp_query->post->ID; 
    } else { 
     $parent = $wp_query->post->post_parent; 
    } 
    $children = get_pages('child_of='.$parent); 
    if(count($children) > 0) { 
?> 
    <ul> 
     <?php wp_list_pages ("&title_li=&child_of=$parent"); ?> 
    </ul> 
<?php } ?> 

ответ

2

это нужно либо сделать это прямо или по крайней мере показать вам, как:

при просмотре страницы, которая имеет детей (или ребенок) отображает только дети этого родителя.

  • При посещении главной страницы все страницы верхнего уровня указаны на боковой панели.
  • При посещении страницы верхнего уровня без детей перечислены все страницы верхнего уровня.
  • При посещении страницы верхнего уровня с детьми перечислены только страницы с детьми и страницы с потомками.
  • При посещении дочерней страницы перечислены только дочерние и дочерние страницы этого родителя.
<?php 
$output = wp_list_pages('echo=0&depth=1&title_li=<h2>Top Level Pages </h2>'); 
if (is_page()) { 
    $page = $post->ID; 
    if ($post->post_parent) { 
    $page = $post->post_parent; 
    } 
    $children=wp_list_pages('echo=0&child_of=' . $page . '&title_li='); 
    if ($children) { 
    $output = wp_list_pages ('echo=0&child_of=' . $page . '&title_li=<h2>Child Pages</h2>'); 
    } 
} 
echo $output; 
?> 

от: http://codex.wordpress.org/Function_Reference/wp_list_pages#List_subpages_even_if_on_a_subpage

Этот метод имеет преимущество параметра echo=0, который возвращает результаты в виде строки в переменной. Тест if ($children) теперь работает, потому что wp_list_pages() будет возвращать пустой, если не найдет совпадений.

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