Wordpress 如何显示菜单树的一部分?

Wordpress 如何显示菜单树的一部分?,wordpress,menu,children,Wordpress,Menu,Children,我正在尝试处理WordPress3.0。这是件很酷的事,但我一个问题也解决不了。例如,我有这样的菜单树。菜单树是从页面构造的 Home news video audio Blog About author Favourite colors red blue green My car wheels tires 这个想法是: 主菜单由根元素组成:主页、博客、我的车 在左侧,我想显示当前活动根元素的子元素 例如,如果一个人

我正在尝试处理WordPress3.0。这是件很酷的事,但我一个问题也解决不了。例如,我有这样的菜单树。菜单树是从页面构造的

Home
   news
   video
   audio
Blog
   About author
   Favourite colors
      red
      blue
      green
My car
   wheels
   tires
这个想法是: 主菜单由根元素组成:主页、博客、我的车 在左侧,我想显示当前活动根元素的子元素

例如,如果一个人在“主页”上,他应该在左边看到:

  news
  video
  audio
About author
       Favourite colors
          red
          blue
          green
如果用户在“博客”页面上,他应该看到:

  news
  video
  audio
About author
       Favourite colors
          red
          blue
          green
我找不到API来实现这一点。你能告诉我在哪里能找到它吗

UPD: @杰森·麦克里 我看过我看过wp_list_pages()并试过了。我不明白如何使用它: 请参阅我的模板以获取页面:

    <?php
/*
 Template Name: page_news

 * @package WordPress
 * @subpackage Twenty_Ten
 * @since Twenty Ten 1.0
 */

get_header(); ?>
<h1>page_news</h1>
<h1>Children menu:</h1>
<?php wp_list_pages('echo=0&child_of=8&title_li='); ?>
<div id="container">
        <div id="content" role="main">

        <?php
        /** Get category id by name*/
        //$catId = get_category_by_slug('news')->term_id;
        query_posts('category_name=news');
        get_template_part( 'loop', 'page' );
        ?>

        </div><!-- #content -->
</div><!-- #container -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

新闻版
儿童菜单:
请参见这行代码:

<?php wp_list_pages('echo=0&child_of=8&title_li='); ?>

我确实有id=8的页面(我在URL中看到)。id=8的页面有多个子页面。 我想打印它们,但它们没有打印出来。函数wp\u list\u pages()的输出为空。
我不知道为什么…:(

你看过wp\u列表页面吗


仔细查看属性的child_签出。它对于在侧栏中提供子导航非常有用。

我停下来研究如何在服务器端输出worpress站点分类法的自定义部分。我只需使用jquery从主菜单复制活动分类法分支,并将其粘贴到我需要的页面容器中。

您可以使用Breadcrumb navxt插件。它完全符合您的要求,非常棒。

您可以编写一个过滤器钩子来实现这一点

我的方法:使用我的自定义钩子在
wp\u nav\u菜单的
参数中创建一个附加的
start\u:

# in functions.php add hook & hook function
add_filter("wp_nav_menu_objects",'my_wp_nav_menu_objects_start_in',10,2);

# filter_hook function to react on start_in argument
function my_wp_nav_menu_objects_start_in( $sorted_menu_items, $args ) {
    if(isset($args->start_in)) {
        $menu_item_parents = array();
        foreach( $sorted_menu_items as $key => $item ) {
            // init menu_item_parents
            if( $item->object_id == (int)$args->start_in ) $menu_item_parents[] = $item->ID;

            if( in_array($item->menu_item_parent, $menu_item_parents) ) {
                // part of sub-tree: keep!
                $menu_item_parents[] = $item->ID;
            } else {
                // not part of sub-tree: away with it!
                unset($sorted_menu_items[$key]);
            }
        }
        return $sorted_menu_items;
    } else {
        return $sorted_menu_items;
    }
}
接下来,在模板中,您只需调用
wp\u nav\u菜单
,并在
参数中添加
start\u,该参数包含要关闭子项的页面ID:

wp_nav_menu( array( 
    'theme_location' => '<name of your menu>',
    'start_in' => $ID_of_page,
    'container' => false,
    'items_wrap' => '%3$s'
) );
wp\u导航菜单(数组(
“主题位置”=>“”,
'start_in'=>页面的$ID_,
'container'=>false,
'items\u wrap'=>“%3$s”
) );

我写这篇文章是为了打印您可能在其中的页面的子导航。如果您想打印每个页面的子导航,请获取页面父项,而不是获取ID。这将涉及更多内容,但这只是一个开始

$menu = wp_get_nav_menu_items( 'Primary Menu' );
$post_ID = get_the_ID();
echo "<ul id='sub-nav'>";
foreach ($menu as $item) {
    if ($post_ID == $item->object_id) { $menu_parent = $item->ID; }
    if (isset($menu_parent) && $item->menu_item_parent == $menu_parent) {
         echo "<li><a href='" . $item->url . "'>". $item->title . "</a></li>";
     }
 }
echo "</ul>";`
$menu=wp\u get\u nav\u menu\u菜单项(“主菜单”);
$post_ID=获取_ID();
回声“”;
foreach($菜单作为$项){
如果($post\u ID==$item->object\u ID){$menu\u parent=$item->ID;}
如果(isset($menu\U parent)&&&$item->menu\U parent==$menu\U parent){
回声“
  • ”; } } 回声“”`
    mac joost的答案很好,但我想补充一点,如果您希望打印父项,则不应取消父项设置,因此需要相应地调整第18行:

        if($item->object_id != (int)$args->start_in) { unset($sorted_menu_items[$key]); }
    

    所以,我的主要想法是,我不想要页面列表。我想要打印从指定id开始的子导航。例如,我确实指定了名为“Blog”的页面的pageId,并且我确实获得了博客分支的子导航。在
    wp_list_page()中设置“child_of”时
    该功能将返回帖子的子菜单,而不是父菜单的子菜单。非常感谢,这是迄今为止最好的解决方案,因为它仍然使用导航菜单/自定义walker等来布局我的子菜单。应该可以接受答案。很高兴看到有人按原样使用
    wp\u导航菜单回答菜单问题。太累了人们说
    wp\u list\u pages
    就像是同一件事。这真是天才!我正试图将我的wp主题化策略朝着一个方向发展,即所有内容都在菜单中组织起来,而不是将其与分级帖子类型相结合。我已经在菜单顺序和基于菜单位置的帖子元方面做了一些不错的事情,但这是缺少的li好主意,但方法不好。在大多数情况下,最好是在服务器端提供您能提供的一切,而只在客户端提供您必须提供的内容。Bruh。。。。。。。。。。。