WordPress导航菜单函数register_nav_menus() 和 wp_nav_menu()

导航菜单是每一个WordPress主题必须的元素,如果你要制作一个WordPress主题,那就必须熟悉WordPress导航菜单注册函数 register_nav_menus() 和 导航菜单调用函数wp_nav_menu() ,这两个参数一般都是配合使用的。今天我们就一起来解释一下这两个函数,并举例说明。

导航菜单注册函数 register_nav_menus() 介绍

register_nav_menus() 是3.0以后用来注册自定义菜单的函数,通过它可以很方便地给你的主题注册一个或多个菜单,在主题的 functions.php 中添加:

1
2
3
4
register_nav_menus( array('header_menu' => 'My Custom Header Menu','footer_menu' => 'My Custom Footer Menu'
) );

上面的代码注册了两个代码,其中 ‘header_menu’  和 ‘footer_menu’ 分别是这两个菜单的“键key”,而后面的 ‘My Custom Header Menu’ 和 ‘My Custom Footer Menu’ 是对这个菜单的描述,会在 外观 – 菜单 中显示出来。下文将会图例说明。

按照上面的结构,就可以注册多个菜单。

导航菜单调用函数 wp_nav_menu() 介绍

wp_nav_menu() 是WordPress 3.0 以后添加的一个自定义导航菜单调用函数,可用来调用 register_nav_menus() 注册的菜单。wp_nav_menu()的使用方法位于wp-includes/nav-menu-templates.php文件中。

可以通过 <?php wp_nav_menu( $args ); ?> 来调用菜单,其中参数 $args 的默认值如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php$defaults = array('theme_location'  => '','menu'            => '','container'       => 'div','container_class' => '','container_id'    => '','menu_class'      => 'menu','menu_id'         => '','echo'            => true,'fallback_cb'     => 'wp_page_menu','before'          => '','after'           => '','link_before'     => '','link_after'      => '','items_wrap'      => '<ul id="%1$s" class="%2$s">%3$s</ul>','depth'           => 0,'walker'          => ''
);wp_nav_menu( $defaults );?>

每个参数的详细介绍如下:

  • $theme_locaton:(字符串)(可选)

默认值: None

用于在调用导航菜单时指定注册过的某一个导航菜单名,如果没有指定,则显示第一个。

1
wp_nav_menu(array( 'theme_location'   =>'primary')); //调用第一个菜单
  • $menu:(字符串)(可选)

默认值: None

使用导航菜单的名称调用菜单,可以是 id, slug, name (按顺序匹配的) 。

  • $container:(字符串)(可选)

默认值: div

ul 父节点(这里指导航菜单的容器)的标签类型,只支持div 和 nav 标签, 如果是其它值, ul 父节点的标签将不会被显示。也可以用false(container => false)去掉ul父节点标签。

  • $container_class:(字符串)(可选)

默认值: menu-{menu slug}-container

ul 父节点的 class 属性值。

  • $container_id:(字符串)(可选)

默认值: None

ul 父节点的 id 属性值。

  • $menu_class:(字符串)(可选)

默认值: menu

ul 节点的 class 属性值。

  • $menu_id:(字符串)(可选)

默认值: menu slug, 自增长的

ul 节点的 id 属性值。

  • $echo:(布尔型)(可选)

默认值: true (直接显示)

确定直接显示导航菜单还是返回 HTML 片段,如果想将导航的代码作为赋值使用,可设置为false。

  • $fallback_cb:(字符串)(可选)

默认值: wp_page_menu (显示页面列表作为菜单)

用于没有在后台设置导航时调的回调函数。

  • $before:(字符串)(可选)

默认值: None

显示在每个菜单链接前的文本。

  • $after:(字符串)(可选)

默认值: None

显示在每个菜单链接后的文本。

  • $link_before:(字符串)(可选)

默认值: None

显示在每个菜单链接文本前的文本。

  • $link_after:(字符串)(可选)

默认值: None

显示在每个菜单链接文本后的文本。

  • $items_wrap:(字符串)(可选)

默认值: None

使用字符串替换修改ul的class。

  • $depth:(整型)(可选)

默认值: 0

显示菜单的深度, 当数值为 0 时显示所有深度的菜单。

  • $walker:(对象型)(可选)

默认值:  new Walker_Nav_Menu

导航菜单注册和调用示例

要想定义出灵活强大的菜单,需要我们熟悉上面介绍的 导航菜单注册函数 register_nav_menus() 和 导航菜单调用函数wp_nav_menu() 。

1.首先我们先要激活 WordPress 3.0 以后的自定义菜单功能,也就是要注册菜单。在主题的 functions.php文件中添加下面的代码:

1
2
3
4
5
//添加导航register_nav_menus(array('left-menu' => '左边栏菜单','top-menu' => '顶部菜单',));

这样我们就注册了 左边栏菜单 和顶部菜单,你可以在 外观-菜单 中查看到:

wpdaxue.com-201301303

我们可以使用下面的函数调用 左边栏菜单:

1
2
3
4
5
<?php if(function_exists('wp_nav_menu')) {wp_nav_menu(array( 'theme_location' => 'left-menu','container_id'=>'menu_left') ); }
?>

其中,’theme_location’ 后面的值 是 ‘left-menu’,就是调用前面注册的那个 左边栏菜单,而 ‘container_id’ 自定义为 ‘menu_left’,最终输出的html结构如下:

1
2
3
4
5
6
7
8
<div id="menu_left" class="menu-xxx-container"><ul class="menu"><li><a href="https://www.wpdaxue.com">首页</a></li><li><a href="https://www.wpdaxue.com/news">WP资讯</a></li>…………<li><a href="https://www.wpdaxue.com/announce">本站相关</a></li></ul>
</div>

也就是说,菜单使用 <div id="menu_left">……</div> 来包含了,接下来,你就可以根据这个 id 来写css美化菜单的显示效果了。

小结:只要灵活运用 导航菜单注册函数 register_nav_menus() 和 导航菜单调用函数wp_nav_menu() ,加上一流的前端技术,就能设计出强大和漂亮的菜单啦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 16 3Sum Closest(最接近的3个数的和)

翻译 给定一个有n个整数的数组S&#xff0c;找出S中3个数&#xff0c;使其和等于一个给定的数&#xff0c;target。返回这3个数的和&#xff0c;你可以假定每个输入都有且只有一个结果。例如&#xff0c;给定S {-1 2 1 -4}&#xff0c;和target 1。那么最接近target的和是2。…

基因重组

1s / 32M 【问题描述】目前,科学家们正致力于对生物基因的重组进行深入研究。基因的物质载体是脱氧核糖核酸(DNA)。DNA 是一种仅由 A、T、G、C 四种基元构成的双螺旋结构的有机分子。DNA 的两条单链上,同一位置的两个基元是互相对应的。A 对 T,G 对 C,因此,我们只需用任意一条链…

Ubuntu下apache2启动、停止、重启、配置

Linux系统为Ubuntu 一、Start Apache 2 Server /启动apache服务 # /etc/init.d/apache2 start or $ sudo /etc/init.d/apache2 start 二、 Restart Apache 2 Server /重启apache服务 # /etc/init.d/apache2 restart or $ sudo /etc/init.d/apache2 restart 三、Stop Apache 2 …

day6笔记

一、上节回顾 list&#xff1a;li [1,2,3,5,a]增加&#xff1a;append&#xff1a;末尾加入追加 insert&#xff1a;插入&#xff0c;在任意位置&#xff0c;insert&#xff08;index,内容&#xff09; extend:迭代着加入&#xff0c;asc ----> ‘a’,‘s’,‘c’ [1,2,3] …

Android手游《》斗地主完整的源代码(支持单机和网络对战)

Android手游《斗地主》完整的源代码&#xff08;支持单机和网络对战&#xff09;下载。一个很不错的源代码。斗地主掌游是一个独特的国内社会斗地主棋牌游戏&#xff0c;之后玩家可以下载网上斗地主和全世界。掌游斗地主特点&#xff1a;1、只有一个主要的社会斗地主棋牌游戏。…

昨天的补给

2014-04-22 09:37 昨天主要改变了之前的布局。采用的是单选按钮。避免逻辑上需要判断。 2014-04-22 09:38 晚上给媳妇买了奶茶和德芙&#xff0c;她很开心。网易订购的项链到了&#xff0c;就是定制的文字多了&#xff0c;不是太好看。 转载于:https://www.cnblogs.com/jsRunne…

jQuery判断当前点击的是第几个li的代码

使用$(this).index()取得li的下标&#xff0c;下面是一个样式替换的例子&#xff1a; $("#aa li").click(function(){ $("#aa li").removeClass("class名字&#xff0c;多个class用空格分开"); $(this).addClass("class名字&#xff0c;多个…

条款46:需要类型转换的时候请为模板定义非成员函数

看看下面这个例子&#xff1a; 1 template<typename T>2 class Rational{3 public:4 Rational(const T & numerator, const T & denominator);5 const T numerator()const;6 const T denominator() const;7 };8 template<typename T>9 const R…

Wordpress菜单函数wp_nav_menu各参数详解及示例

https://blog.csdn.net/qq_37296622/article/details/82633833 注册菜单 首先要注册菜单&#xff0c;将以下函数添加至function.php函数里 register_nav_menus(array( PrimaryMenu>导航, friendlinks>友情链接, footer_nav>页脚导航)); add_theme_support(nav_menus)…

page对象

page对象指的是页面本身 查看当前page对象的字符串描述 转载于:https://www.cnblogs.com/liuliuyiming/p/7731704.html

Memcached总结三:Memcached常用命令及使用说明

一、存储命令 存储命令的格式&#xff1a; 12<command name> <key> <flags> <exptime> <bytes><data block>参数说明如下&#xff1a; <command name>set/add/replace<key>查找关键字<flags>客户机使用它存储关于键值对…

mysql.zip免安装版配置

MYSQL ZIP免安装版配置 1. 下载MySQL 选择自己想要的.本次安装.我使用的是mysql-5.6.17-winx64 地址:http://dev.mysql.com/downloads/mysql/ 2. 解压zip 文件. 在mysql 的根目录下找到 my-default.ini 复制出一个 my.ini 文件, 根据你需要的位置修改 my.ini 文件 a&#xf…

Html中CSS之去除li前面的小黑点,和ul、LI部分属性方法

https://blog.csdn.net/business122/article/details/7973638 <style type"text/css"> list-style:none; </style>

Day3:集合

一、集合的定义及特性 1.集合的特性 1.1 去重&#xff0c;把一个列表变成集合&#xff0c;就自动去重了 1.2 关系测试&#xff0c;测试两组数据之间的交集、差集等关系 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan list_1 [1,3,5,9,7,5,4] set_1 …

解决SQL命令行回退的问题

场景 在linux或者aix上安装后Oracle后&#xff0c;在SQL命令行下无法通过键盘的退格键回退&#xff0c;如下 解决方法 安装软件 # rpm -ivh rlwrap-0.41-1.el6.x86_64.rpm warning: rlwrap-0.41-1.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEYPrep…

p740备件号

http://www.gzyuxing.net/machine/show-113.htmlhttp://www.fuyuanit.cn/index.php?mProduct&ashow&id258http://www.fuyuanit.cn/index.php?mProduct&ashow&id258扩展柜如何确定:标签上一般有字样&#xff0c;到ibm knowledge center搜索关键字 5877 parts即…

Android listview addHeaderView 和 addFooterView 详解

addHeaderView()方法&#xff1a;主要是向listView的头部添加布局addFooterView()方法&#xff1a;主要是向listView的底部添加布局 需要注意的是添加布局的时候应该添加从父容器开始添加&#xff0c;而不能直接添加父容器中的子控件。例如&#xff1a;从一个xml布局文件中添加…

python教程--__init_.py的作用

__init__.py 的作用 python的每个模块的包中&#xff0c;都有一个__init__.py文件&#xff0c;有了这个文件&#xff0c;我们才能导入这个目录下的module。那么&#xff0c;__init__.py还有什么别的功能呢&#xff1f;其实&#xff0c;__init__.py里面还是可以有内容的&#xf…

在HTML中怎么去掉超链接的下划线?

<style type"text/css">a {text-decoration: none}</style> https://zhidao.baidu.com/question/253614370.html

ASP.NET AJAX Timer Trouble? Location is key.

If you’ve made much use of the ASP.NET AJAX Timer control, you may have noticed that it can behave somewhat unexpectedly. In this post, I’m going to take a closer look at how the Timer works and the most significant factor that influences it: Location.…