custom menu not found

时间:2012-02-26 作者:php-b-grader

我试图使用一个菜单,我有部分工作,我有设置功能。php:

if (function_exists(\'register_nav_menu\')) {
  register_nav_menu(\'main-menu\', \'Main Menu\');
}
我已经在外观->菜单中配置了菜单,共有2页:主页和;示例页。

我的问题:

当我使用wp\\u nav\\u menu()调用菜单时,如下所示:

代码#1

wp_nav_menu( array( \'theme_location\' => \'main-menu\', \'container\' => false ) );
我没有菜单-屏幕上没有打印任何内容

当我像这样手动访问元素时:

代码#2

$menu_name = \'main-menu\';

if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] ) ) {

  $menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
  $menu_items = wp_get_nav_menu_items($menu->term_id);
  $menu_list = \'<ul id="menu-\' . $menu_name . \'">\';

  foreach ( (array) $menu_items as $key => $menu_item ) {
    $title = $menu_item->title;
    $url = $menu_item->url;
    $menu_list .= \'<li><a href="\' . $url . \'">\' . $title . \'</a></li>\';
  }
  $menu_list .= \'</ul>\';
} else {
  $menu_list = \'<ul><li>No Menu</li></ul>\';
}
echo $menu_list;

2 个回复
SO网友:Ruturaj

我不确定我是否正确地跟踪了你;但我认为您正在尝试完全自行构建菜单HTML。如果我是对的,那么你想做的事"Walker" wp nav菜单的对象。

您需要在函数中编写一个单独的函数。php,然后将函数名作为“walker”传递给wp\\U nav\\U菜单。这不像让Wordpress为你做菜单的HTML那样简单,但也不是太难。

我建议您通过以下链接了解更多关于“Walker”的内容:Menu items description? Custom Walker for wp_nav_menu().

如果这能解决您的问题,请告知我们。

我可以知道为什么Wordpress可以帮你手动创建菜单的HTML吗?我理解,有时theme对菜单栏的艺术性说明让我们很难找到传递到wp\\U nav\\U菜单所需的设计冗余。。。但如果不是这样的话,那么我觉得你选择了一条艰难的道路来实现预期的结果。

SO网友:Jeremy Jared

确保您正在添加register_nav_menu 函数内部after_theme_setup. 以下是一个示例:

<?php
  add_action( \'after_setup_theme\', \'your_newtheme_setup\' );
  if ( ! function_exists( \'your_newtheme_setup\' ) ) :
  function your_newtheme_setup() {
    if (function_exists(\'register_nav_menu\')) {
      register_nav_menu(\'main-menu\', \'Main Menu\');
      }
    add_theme_support(\'post-thumbnails\');    
    // Add other Theme Suppotrs inside the after_theme_setup function
    //...
    //...
    }
  endif;
?>

结束

相关推荐

Custom Post Type Menus

我正在写一个插件,因为我们的主要网站最终将被移植到WordPress。我已经为这个插件计划了多个自定义帖子类型,并希望将它们全部组合到一个主菜单中。大体上I want the \"Visitors\" link to be placed under \"Argus Admin\". 没有必要添加其他链接,因为我可以在任何地方“黑客”这些链接。 $v_args = array( \'labels\' => array ( \'nam