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 相关文章推荐
4.与数据库的连接
Oct 09 PHP
用PHP读取IMAP邮件
Oct 09 PHP
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
Oct 19 PHP
解决PHP超大文件下载,断点续传下载的方法详解
Jun 06 PHP
一个基于phpQuery的php通用采集类分享
Apr 09 PHP
php去除字符串中空字符的常用方法小结
Mar 17 PHP
php的debug相关函数用法示例
Jul 11 PHP
浅谈PHP的反射API
Feb 26 PHP
Smarty缓存机制实例详解【三种缓存方式】
Jul 20 PHP
CI框架简单分页类用法示例
Jun 06 PHP
THINKPHP5.1 Config的配置与获取详解
Jun 08 PHP
PHP新手指南
Apr 01 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加密解密的代码
2006/10/09 PHP
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
2013/08/16 PHP
php array_udiff_assoc 计算两个数组的差集实例
2016/11/12 PHP
javascript  Error 对象 错误处理
2008/05/18 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
2016/06/17 Javascript
初识简单却不失优雅的Vue.js
2016/09/12 Javascript
jQuery 的 ready()的纯js替代方法
2016/11/20 Javascript
js for循环倒序输出数组元素的实例
2017/03/01 Javascript
footer定位页面底部(代码分享)
2017/03/07 Javascript
10道典型的JavaScript面试题
2017/03/22 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
JavaScript实现购物车基本功能
2017/07/21 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
2018/04/11 Javascript
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
vuex实现购物车功能
2020/06/28 Javascript
Python3.4编程实现简单抓取爬虫功能示例
2017/09/14 Python
python实现微信远程控制电脑
2018/02/22 Python
对Python中type打开文件的方式介绍
2018/04/28 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
2018/12/19 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
2019/04/12 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
解决Python安装cryptography报错问题
2020/09/03 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
大三毕业自我鉴定
2014/01/15 职场文书
学校运动会报道稿
2014/09/23 职场文书
三下乡个人总结
2015/03/04 职场文书
垂直极限观后感
2015/06/08 职场文书
《怀念母亲》教学反思
2016/02/19 职场文书
Vue3中的Refs和Ref详情
2021/11/11 Vue.js