问题描述
以前,我可以使用以下逻辑选择性地加载 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。