我想创建一个只拉一个特定页面的子菜单选项的菜单。
例如,如果菜单选项信息中心,子菜单留言板和日历,我希望能够创建一个单独的菜单只有留言板和日历。
我想这样做没有wp_list_pages功能,使菜单选项可以使用外观>在WordPress的菜单选项卡进行管理。
谢谢!
我想创建一个只拉一个特定页面的子菜单选项的菜单。
例如,如果菜单选项信息中心,子菜单留言板和日历,我希望能够创建一个单独的菜单只有留言板和日历。
我想这样做没有wp_list_pages功能,使菜单选项可以使用外观>在WordPress的菜单选项卡进行管理。
谢谢!
如果我理解正确的,你想为子页面额外的菜单项?
例如,你有一个看起来像这样的菜单
HOME有关仪表板常见问题联系
仪表板有2子页面 - > BOARD日历
当你在Dashboard页面上你想要的板和日历pagees显示是这样的:
首页关于DASHBOAR帮助联系BOARD日历
您可以在functions.php中添加aditional的菜单是这样
<?php if (function_exists('register_nav_menus'))
{
register_nav_menus
(
array
(
'main_nav'=>'main menu', // your main menu
'dash_nav'=>'dashboard menu', //your dashboard menu
)
);
}?>
然后创建仪表盘,这将有这样的一个页面模板:
<?php wp_nav_menu(array('menu'=>'dashboard menu'));?>
编辑:
那么你可以编辑header.php文件,并添加这样的事
<?php if (is_page_template('dashboard.php') :?>
<link href="csspath" rel="stylesheet" type="text/css" />
<?php endif;?>
这样,你添加一个覆盖子菜单的另一个css文件。
我想我也有过类似的愿望,你选择和只显示一个子菜单,是刚刚从现有的WordPress菜单孩子菜单项。 这可以通过编辑的functions.php并补充说,有它自己的学步车类的目标,并显示一个子菜单中短码来完成。
//register menu shortcode
add_shortcode('menu', 'shortcode_menu');
function shortcode_menu($args ) {
//don't echo the ouput so we can return it
$args['echo']=false;
//in case menu isn't found display a message
$args['fallback_cb']='shortcode_menu_fallback';
//check if showing a submenu, if so make sure everything is setup to do so
if (isset($args['show_submenu']) && !empty($args['show_submenu'])) {
if (!isset($args['depth'])) {
$args['depth']=1;
}
$args['walker']=new Sub_Menu_Walker_Nav_Menu();
}
$menu=wp_nav_menu( $args );
return $menu;
}
//message to display if menu isn't found
function shortcode_menu_fallback($args ) {return 'No menu selected.';}
//special walker_nav_menu class to only display submenu
//depth must be greater than 0
//show_submenu specifies submenu to display
class Sub_Menu_Walker_Nav_Menu extends Walker_Nav_Menu {
function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ) {
if ( !$element )
return;
$id_field = $this->db_fields['id'];
$displaythiselement=$depth!=0;
if ($displaythiselement) {
//display this element
if ( is_array( $args[0] ) )
$args[0]['has_children'] = ! empty( $children_elements[$element->$id_field] );
$cb_args = array_merge( array(&$output, $element, $depth), $args);
call_user_func_array(array(&$this, 'start_el'), $cb_args);
}
$id = $element->$id_field;
if ( is_array( $args[0] ) ){
$show_submenu=$args[0]['show_submenu'];
}else
$show_submenu=$args[0]->show_submenu;
// descend only when the depth is right and there are childrens for this element
if ( ($max_depth == 0 || $max_depth >= $depth+1 ) && isset( $children_elements[$id]) && $element->title==$show_submenu) {
foreach( $children_elements[ $id ] as $child ){
if ( !isset($newlevel) ) {
$newlevel = true;
//start the child delimiter
$cb_args = array_merge( array(&$output, $depth), $args);
call_user_func_array(array(&$this, 'start_lvl'), $cb_args);
}
$this->display_element( $child, $children_elements, $max_depth, $depth + 1, $args, $output );
}
unset( $children_elements[ $id ] );
}
if ( isset($newlevel) && $newlevel ){
//end the child delimiter
$cb_args = array_merge( array(&$output, $depth), $args);
call_user_func_array(array(&$this, 'end_lvl'), $cb_args);
}
if ($displaythiselement) {
//end this element
$cb_args = array_merge( array(&$output, $element, $depth), $args);
call_user_func_array(array(&$this, 'end_el'), $cb_args);
}
}
}
[menu menu='Main' show_submenu='About']
[menu menu='Main']
进一步的阅读/参考看到这个WordPress的问题 。
我很惊讶,WordPress的没有这个选项内置到wp_nav_menu功能。 一直以来,以实现WordPress的二次或拆分菜单的斗争。 试图完成这个目标,我终于决定把我自己的插件,让你选择你的菜单开始深入一些不同的解决方案后。 所以,你可以设置起始深度为“1”的二级菜单。
您使用的插件是这样的:
wp_nav_plus(array('theme_location' => 'primary_navigation', 'start_depth' => 1));
该插件可以在这里我的网站有兴趣: https://mattkeys.me/products/wp-nav-plus/