繁体   English   中英

WordPress注册自定义菜单

[英]Wordpress register custom menu

我的自定义网站的标题中有一个菜单,我想在Wordpress functions.php文件中注册此菜单,并在header.php文件中使用它。

自定义菜单html代码:

 <div id="top-nav-right-items" class="pull-right top-links"> <ul class="list-inline"> <li><a href="">فروشگاه</a></li> <li> <a href="" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-external-link-square"></i> <span class="hidden-xs hidden-sm hidden-md">حساب کاربری</span> <span class="caret"></span></a> <ul class="dropdown-menu dropdown-menu-right"> <li><a target="_blank" title="" href="">آیتم 1</a></li> <li><a target="_blank" title="" href="">آیتم 2</a></li> <li><a target="_blank" title="" href="">آیتم 3</a></li> </ul> </li> <li><a href="">سبد خرید</a></li> <li><a href="">تسویه حساب</a></li> <li><a href="">درباره ما</a></li> <li><a href="">تماس با ما</a></li> </ul> </div> <!-- #top-nav-right-items --> 

我知道如何在functions.php文件中注册此菜单,但是我不知道如何在我的wordpress网站中显示自定义菜单。

<?php

function register_menu() {
    register_nav_menu('top-menu',__( 'TOP MENU' ));
}
add_action( 'init', 'register_menu' );

?>

您可以使用wp_nav_menu()函数在模板文件中呈现菜单。

以最简单的形式可以像这样调用:

wp_nav_menu(array (
    'theme_location' => 'top-menu',
));

对于基本自定义,您可以更改阵列中列出的默认参数 但是,这是非常有限的,因为您可以通过简单的更改仅更改一些内容,例如container_classmenu_class
虽然有walker参数,它接受Walker实例。 默认情况下,它设置为Walker_Nav_Menu ,并且这是有效处理菜单呈现的类。 为了进行最深入的定制,您可以扩展此类并将新类别设置为walker参数。 这使您可以完全控制菜单。

如果您不想深入了解,仍然可以使用一些过滤器来更改菜单的呈现方式。 您也可以在Walker_Nav_Menu的源代码中发现这些过滤器。 这些过滤器是nav_menu_submenu_css_classnav_menu_item_argsnav_menu_css_classnav_menu_item_idnav_menu_link_attributesnav_menu_item_titlewalker_nav_menu_start_el

因此,例如,要将新的CSS类添加到子菜单中,可以编写如下代码:

add_filter('nav_menu_submenu_css_class', function ($classes, $args, $depth) {
    $classes[] = 'dropdown-menu';
    $classes[] = 'dropdown-menu-right';

    return $classes;
}, 10, 3);

您可以使用“ menu_class”或“ container_class”参数。

wp_nav_menu(array (
    'theme_location' => 'top-menu',
    'menu_class' => 'class_name',
));

您可以检查wordpress Codex中该功能的所有可用参数。

编辑:menu_class参数将应用于ul

function register_my_menus(){
register_nav_menus(
array(
'primary-menu'=>__('Primary Menu'),
'footer-menu'=>__('Footer Menu'),
'additional-menu'=>__('Additional Menu')
)
);
}
add_action('init','register_my_menus');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM