2010-05-11 137 views
0

我有一個主頁有一個兒童項目。現在我的問題是,是否有可能將主頁面直接鏈接到其中的子項目?例如。WordPress的菜單項

- 主要頁面(鏈接至第2頁)

---第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。 「我們,團隊,新聞」。我想要「關於我們」鏈接到「我們」而不是關於我們的網頁。 – 2010-05-12 14:28:38

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

如果您在發佈後立即看到此內容,代碼中出現錯誤。現在已經糾正了。 – 2010-05-12 15:38:54