2010-05-11 2 views
0

У меня есть главная страница с детским изображением. Теперь мой вопрос: возможно ли связать ссылку главной страницы с элементом children? Например.Wordpress Пункт меню

-Главный Page (ссылки на страницы 2)

--- Page 2

Вот мой код:

<div id="MainNav"> 
<ul> 
<?php wp_list_pages('exclude=3&sort_column=menu_order&title_li=&depth=1'); ?> 
</ul> 
</div> 
<div id="leftCol"> 
<?php if($post->post_parent) 
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0"); else 
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0"); 
if ($children) { ?> 
<ul> 
<?php echo $children; ?> 
</ul> 
<?php } else { ?> 
<?php } ?> 
</div> 

ответ

1

На первый взгляд, это выглядит как ваш подход должен работать. Не могу сказать больше без дополнительной информации о вашей проблеме.

В качестве альтернативы, я сделал аналогичную вещь в блоге, который я поддерживаю, но нуждался в большем контроле над выходом. Поэтому я закончил свою собственную функцию. Вот как я это сделал:

// Generate the subnav for a page 
// Returns a list of links to child pages 
// if there are no children, returns a blank list 
function get_subnav($page_id) 
{ 
    $current_page = get_page($page_id); 
    if ($current_page->ancestors) { 
     $child = get_page($page_id); 
     $ancestor_id = $child->ancestors[0]; 
     $page = get_page($ancestor_id); 
    } else { 
     $page = get_page($page_id); 
    } 

    $children = get_children('post_parent=' . 
      $page->ID . '&post_type=page&post_status=publish&order=ASC&orderby=menu_order'); 

    if ($children) { 
     $html = ''; 
     foreach ($children as $child) { 
     $html .= "<li><a href='" . get_page_link($page->ID) . "'>" . get_post_meta($page->ID, 'nav_name', true) . "</a></li>\n"; 
     } 
    } else { 
     return false; 
} 


return $html; 

}

Я называю это так: get_subnav($post->ID)

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

+0

спасибо. Нет проблем, я просто хотел узнать, можно ли связать главную страницу с первыми детьми. Итак, скажем, у вас есть главный навигатор «О нас», и внутри вас есть subnavs в разделе «О нас», например. «кто мы, команда, новости». Я хочу, чтобы «О нас» ссылался на «кто мы» не на страницу, которая говорит о нас. –

0

не понимаю.

Код, который вы предоставили, не содержит ошибок (даже в режиме отладки). Вы спрашиваете, работает ли это? Если да, то да. Если это не работает для вас, сообщите нам свои спецификации и где в теме вы добавляете это.

Кроме того, вместо $post->post_parent вы, вероятно, должны использовать $wp_query->post->post_parent. Это безопаснее, если кто-то использовал пользовательские запросы и называет их $post в цикле.

0

Я сделал это раньше, создав шаблон страницы, который автоматически перенаправляет на первого ребенка. Возможно, вы можете это использовать. Добавить файл в директории шаблона под названием tofirstchild.php и поместить это в нем:

<?php 

/* 
Template Name: Redirect To First Child 
*/ 

if (have_posts()) { 
    while (have_posts()) { 
     the_post(); 
     $pagekids = get_pages("post_parent=" . $post->ID . "&sort_column=menu_order"); 
     $firstchild = $pagekids[0]; 
     wp_redirect(get_permalink($firstchild->ID)); 
    } 
} 

?> 

Тогда в области администратора, выберите «Перенаправление первенца» шаблон для «О нас» страницы.

+0

Если вы видели это сразу после того, как я разместил его, произошла ошибка в коде. Теперь это исправлено. –

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