您指的是nav\\U菜单的回退功能。这是“wp\\u page\\u menu”,不幸的是,它不会产生与自定义菜单相同类型的标记。
要解决此问题,请创建自己的回退菜单。我使用的是:
function my_page_menu($args){
$menu = \'\';
$args[\'echo\'] = false;
$args[\'title_li\'] = \'\';
// If the front page is a page, add it to the exclude list
if (get_option(\'show_on_front\') == \'page\') $args[\'exclude\'] = get_option(\'page_on_front\');
$menu .= str_replace(array("\\r", "\\n", "\\t"), \'\', wp_list_pages($args));
if($menu):
if($args[\'container\']) $menu = \'<\'.$args[\'container\'].\' class="\'.$args[\'container_class\'].\'">\'.$menu;
$menu .= \'<ul class="\'.$args[\'menu_class\'].\'">\'.$menu;
// add \'home\' menu item
$menu .= \'<li class="home \'.((is_front_page() && !is_paged()) ? \'current-menu-item\' : null).\'"><a href="\'.home_url(\'/\').\'" title="\'.__("Home Page").\'">\'.$args[\'link_before\'].__("Home").$args[\'link_after\'].\'</a></li>\';
$menu .= \'</ul>\';
if($args[\'container\']) $menu .= \'</\'.$args[\'container\'].\'>\\n"\';
$menu = apply_filters(\'wp_page_menu\', $menu, $args);
endif;
echo $menu;
}
你可能需要改变这一点,因为我的主题以自己的方式处理菜单,但我想你已经了解了基本的想法。
当你打电话的时候wp_nav_menu
像这样做wp_nav_menu(array(\'fallback_cb\' => \'my_page_menu\'));
还可以使用以下方法将类与自定义菜单中的类进行匹配:
add_filter(\'page_css_class\', \'atom_page_css_classes\', 420, 2);
function atom_page_css_classes($classes, $page){
// overwrite and use page (safe) name instead of ID; nobody styles IDs...
$new_classes = array(\'page-\'.$page->post_name);
// adjust active menu classes to match the ones added by wp_nav_menu()
foreach($classes as $class)
if($class == \'current_page_item\') $new_classes[] = \'current-menu-item\';
elseif($class == \'current_page_parent\') $new_classes[] = \'current-menu-parent\';
elseif($class == \'current_page_ancestor\') $new_classes[] = \'current-menu-ancestor\';
return $new_classes;
}
这样可以减少一些CSS规则。。。