你肯定是在正确的轨道上,但是wp_nav_menu
将输出一个包含大量容器和类名的菜单;为了在语义UI方面保持它的语义,如果您自己构建结构,您将得到很好的帮助。
在菜单管理器中获取已注册菜单的名称。检查register_nav_menu
在您的functions.php
如果你不确定。例如,这就是《十三三》主题中的内容:
register_nav_menu( \'primary\', __( \'Navigation Menu\', \'twentythirteen\' ) );
(在你的情况下,可能是
about-menu
.)
您可以使用下面的代码片段通过菜单名称生成自定义菜单(我们将能够获得所有详细信息(例如位置、id等)自动注册菜单的)
<?php
$menu_name = \'primary\'; // this is the registered menu name
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);
echo \'<div class="ui secondary vertical pointing menu">\';
foreach ( (array) $menu_items as $key => $menu_item ) :
$title = $menu_item->title;
$class = $menu_item->classes; // get array with class names
if ( get_the_ID() == $menu_item->object_id ) { // check for current page
echo \'<a class="item active">\';
} else {
echo \'<a class="item">\';
}
echo \'<i class="item \' . implode(\' \', $class) . \'"></i>\' . $title;
echo \'</a>\';
endforeach;
echo \'</div>\';
else :
echo \'<div class="ui error message"><p>Menu "\' . $menu_name . \'" not defined.</p></div>\';
endif;
?>
仔细看看上面的代码。我们正在遍历定义菜单的菜单项。确保在菜单管理器中添加类名(用于图标)。插入类名(用空格分隔多个类名)是可选的,默认情况下是隐藏的;您可以通过激活输入字段
Screen Options 在顶部。
Update: 您还可以输出带有页面链接的菜单:
<?php
$menu_name = \'primary\'; // this is the registered menu name
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);
echo \'<div class="ui vertical menu">\';
foreach ( (array) $menu_items as $key => $menu_item ) :
$title = $menu_item->title;
$url = $menu_item->url;
$class = $menu_item->classes; // get array with class names
if ( get_the_ID() == $menu_item->object_id ) { // check for current page
echo \'<a class="item active" href="\' . $url . \'">\';
} else {
echo \'<a class="item" href="\' . $url . \'">\';
}
echo \'<i class="item \' . implode(\' \', $class) . \'"></i>\' . $title;
echo \'</a>\';
endforeach;
echo \'</div>\';
else :
echo \'<div class="ui error message"><p>Menu "\' . $menu_name . \'" not defined.</p></div>\';
endif;
?>