問題描述

以前,我可以使用以下邏輯選擇性地載入 currently-selected 父頁面的子頁面:

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 id="subnav">
     <?php echo $children; ?>
   </ul>
<?php
} else {
}

使用 new register_nav_menus() /wp_nav_menu() 功能,似乎並不是一種本機的方法。在這一點上,任何人都知道我可以一起補丁嗎?

以下是我正在嘗試實現的截圖:

最佳解決方案

我建立了一個名為頁面 Sub 導航 (我知道的聰明) 的小工具,這是為我工作的。

如果你安裝了這個,你可以把視窗小工具拖到你的一個 widget 區域,BAM 就可以了。

<?php
/*
Plugin Name: Page Sub Navigation
Plugin URI: http://codegavin.com/wordpress/sub-nav
Description: Displays a list of child pages for the current page
Author: Jesse Gavin
Version: 1
Author URI: http://codegavin.com
*/

function createPageSubMenu()
{
  if (is_page()) {
    global $wp_query;

    if( empty($wp_query->post->post_parent) ) {
      $parent = $wp_query->post->ID;
    } else {
      $parent = $wp_query->post->post_parent;
    }

    $title = get_the_title($parent);

    if(wp_list_pages("title_li=&child_of=$parent&echo=0" )) {
      echo "<div id='submenu'>";
      echo "<h3><span>$title</span></h3>";
      echo "<ul>";
      wp_list_pages("title_li=&child_of=$parent&echo=1" );
      echo "</ul>";
      echo "</div>";
    }
  }
}


function widget_pageSubNav($args) {
  extract($args);
  echo $before_widget;
  createPageSubMenu();
  echo $after_widget;
}

function pageSubMenu_init()
{
  wp_register_sidebar_widget("cg-sidebar-widget", __('Page Sub Navigation'), 'widget_pageSubNav');
}
add_action("plugins_loaded", "pageSubMenu_init");
?>

或者如果你只想要多汁的部分…

if (is_page()) {
  global $wp_query;

  if( empty($wp_query->post->post_parent) ) {
    $parent = $wp_query->post->ID;
  } else {
    $parent = $wp_query->post->post_parent;
  }

  if(wp_list_pages("title_li=&child_of=$parent&echo=0" )) {
    wp_list_pages("title_li=&child_of=$parent&echo=1" );
  }
}

UPDATE

我發現另一個外掛基本上是一樣的 (也許更好,我不知道) 。 http://wordpress.org/extend/plugins/subpages-widget/

次佳解決方案

你可以做一個 css hack 來做這個 (我會嘗試的兩種方式)

1 這是我可以想到的最簡單的方式,使 css 顯示子導航中的專案。

.current-menu-ancestor ul {display:inline;}
.current-menu-parent ul (display:inline;}

2 假設你的主題支援 body 類,你可以為每個”sub nav” 建立一個導航選單,並將它們設定為顯示在主導航下面 – 然後編輯你的樣式表,只顯示 subnav div 的使用這樣的東西:

.child-menu-about, .child-menu-leadership {display:none;}
body.page-id-YOUR_ABOUT_PAGE_ID .child-menu-about {display:inline;}
body.category-YOUR-CATEGORY-SLUG  .child-menu-leadership {display:inline;}

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。