WordPress开发中自定义菜单的相关PHP函数使用简介


Posted in PHP onJanuary 05, 2016

函数意义
wp_nav_menu ()
自定义菜单显示函数

register_nav_menu ()
自定义菜单注册函数 ? 单数

register_nav_menus ()
自定义菜单注册函数 ? 复数 (很蛋疼的一个复数形式)

以下举例均用 register_nav_menus () 这个复数形式,以免混淆。

使用位置
register_nav_menus ()
function.php 文件中,用于注册自定义菜单在后台的代码调用名称和后台显示名称。

wp_nav_menu ()
主题任意你想调用自定义菜单的位置。

使用方法
注册4个菜单更正:3个菜单(困了,老出错。)

register_nav_menus( array( 
 'nav1' => 'n1',
//nav1 为菜单名称(调用的时候用)
//n1 为显示名称 , 后台选菜单的时候用
 
 'nav2' => 'n2',
 
 'nav3' => 'n3'
 
 ));

然后去你的后台 =》 外观 =》 菜单 里面看下,
基本上你就明白了,
要是不明白,
那你就再看一下,嘿嘿~

主题你想要显示自定义导航的位置添加以下代码。

 

//调用 nav1 的菜单
<?php wp_nav_menu( array( 'theme_location' => 'nav1' ) ); ?>
 
//调用 nav2 的菜单
<?php wp_nav_menu( array( 'theme_location' => 'nav2' ) ); ?>

然后就可以到后台去添加一个菜单了,(名称最好是名称或中文。更正:最好是英文。)
你可以设定这个菜单里面显示什么,不显示什么,甚至可以设置导航的层级内容,很方便的说。

过滤掉自定义菜单中无用的CLASS值
在 WordPress 的自定义菜单的输出中,菜单中每一个子元素都有一个很长的 class 值,虽然从外观上看不出什么异样来,但从代码上看确实让人心里很难受,其实要过滤掉这些 class 值有很多方法,今天来讲一下通过挂载过滤器 (filter),去除那些我们不想要的class。
在 WordPress 3.5.0 以后的版本中将取消友情链接功能,并以自定义菜单功能实现,这个是后话。
我们在输出自定义菜单的时候,为了让我们更好的控制自定义样式, WordPress 会默认给我们菜单的子元素输出很多个 class 的值,就像下面这样。

<li id="menu-item-19" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19">

如何过滤之,让我们的网页源代码变得简洁、易读呢?

在你的functions.php里面加入

function filter_nav_menu_css_class ($classes){
//想要通过的class值
 $do_class_name = array('current-menu-item');
 $outPut = array_intersect($do_class_name,$classes);
 array_filter( $classes );
 return $outPut;
};
add_filter('nav_menu_css_class','filter_nav_menu_css_class');

这里将 current-menu-item 这个值保留主要是为了辨别当前页面。

其实,
还有其他方法去过滤输出的 class 值的,
比如说控制 Walker_Nav_Menu 这个类来精确控制自定义菜单的输出,
但因为比较麻烦所以在这里先不提,其实 Walker_Nav_Menu 这个类可以完成更多我们需要的功能。

总结 ? 需注意
自定义菜单式在 WordPress 3.0 后才引入的一个功能概念,有点类似于之前的小工具,不过自定义菜单更倾向于导航用途,但因为新功能的中文翻译、流传较慢,再加上这个功能只要是主题成型的爱折腾的博主一般不会在导航方面折腾,所以大家还一直不了解,甚至都出现了错误教程满天飞得局面,在这里希望有的博主在发表博文的时候不要以转载为主,就算是转载一些主要功能请具体测试一下,以免误导新人。

需注意:
后台设置中如果没有给自定义导航里面设定菜单的话,那wp会为没有设定菜单的导航里自动添加所有页面为导航,这是一个蛋疼的缺省,所以如果这个导航我们不想显示的话,你最好能在后天设定一个空的菜单,然后给不想显示的导航添加这个菜单,这样自定义导航就不会显示了。

PHP 相关文章推荐
PHP详细彻底学习Smarty
Mar 27 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
PHP 登录记住密码实现思路
May 07 PHP
php实现的DateDiff和DateAdd时间函数代码分享
Aug 16 PHP
Codeigniter购物车类不能添加中文的解决方法
Nov 29 PHP
深入解析PHP中foreach语句控制数组循环的用法
Nov 30 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
Dec 14 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
Jun 21 PHP
php post json参数的传递和接收处理方法
May 31 PHP
php实现简单的守护进程创建、开启与关闭操作
Aug 13 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 PHP
PHP高并发和大流量解决方案整理
Dec 24 PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 #PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 #PHP
在WordPress中使用wp_count_posts函数来统计文章数量
Jan 05 #PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
Jan 05 #PHP
简单的php+mysql聊天室实现方法(附源码)
Jan 05 #PHP
基于PHP实现简单的随机抽奖小程序
Jan 05 #PHP
详解WordPress开发中的get_post与get_posts函数使用
Jan 04 #PHP
You might like
php实现发送微信模板消息的方法
2015/03/07 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
PHP连接sftp并下载文件的方法教程
2018/08/26 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
setTimeout和setInterval的浏览器兼容性分析
2007/02/27 Javascript
Firefox中使用outerHTML的2种解决方法
2014/06/07 Javascript
jQuery DOM插入节点操作指南
2015/03/03 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
2016/06/03 Javascript
微信小程序页面传值实例分析
2017/04/19 Javascript
基于vue2实现上拉加载功能
2017/11/28 Javascript
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
vue 动态绑定背景图片的方法
2018/08/10 Javascript
解决vue的变量在settimeout内部效果失效的问题
2018/08/30 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
JS 事件机制完整示例分析
2020/01/15 Javascript
vue监听dom大小改变案例
2020/07/29 Javascript
python动态加载包的方法小结
2016/04/18 Python
深入理解Python中的*重复运算符
2017/10/28 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
在python中bool函数的取值方法
2018/11/01 Python
关于Python Tkinter Button控件command传参问题的解决方式
2020/03/04 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
你应该知道的30个css选择器
2014/03/19 HTML / CSS
加热夹克:RAVEAN
2018/10/19 全球购物
优质有机椰子产品:Dr. Goerg
2019/09/24 全球购物
电子狗项圈:eDog Australia
2019/12/04 全球购物
大学生最新职业生涯规划书范文
2014/01/12 职场文书
自我鉴定注意事项
2014/01/19 职场文书
互联网创业计划书的书写步骤
2014/01/28 职场文书
乡镇消防工作实施方案
2014/03/27 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
工作岗位职责范本
2015/02/15 职场文书
2015年乡镇工会工作总结
2015/05/19 职场文书
会议简讯范文
2015/07/20 职场文书