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-accelerator网站加速PHP缓冲的方法
Jul 30 PHP
PHP中的函数-- foreach()的用法详解
Jun 24 PHP
php5.3 注意事项说明
Jul 01 PHP
Windows中使用计划任务自动执行PHP程序实例
May 09 PHP
PHP安全的URL字符串base64编码和解码
Jun 19 PHP
PHP使用内置dir类实现目录遍历删除
Mar 31 PHP
php实现简单的语法高亮函数实例分析
Apr 27 PHP
php中header跳转使用include包含解决参数丢失问题
May 08 PHP
Yii操作数据库实现动态获取表名的方法
Mar 29 PHP
PHP的openssl加密扩展使用小结(推荐)
Jul 18 PHP
php实现获取近几日、月时间示例
Jul 06 PHP
mysqli扩展无法在PHP7下升级问题的解决
Sep 10 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.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
PHP常用的小程序代码段
2015/11/14 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
JavaScript实现Sleep函数的代码
2007/03/04 Javascript
javascript类继承机制的原理分析
2009/09/12 Javascript
jquery中.add()的使用分析
2013/04/26 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
json格式的javascript对象用法分析
2016/07/04 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
基于JavaScript伪随机正态分布代码实例
2019/11/07 Javascript
JavaScript实现像雪花一样的Hexaflake分形
2020/07/07 Javascript
压缩包密码破解示例分享(类似典破解)
2014/01/17 Python
Python代码的打包与发布详解
2014/07/30 Python
Python实现多线程抓取网页功能实例详解
2017/06/08 Python
浅析Python pandas模块输出每行中间省略号问题
2018/07/03 Python
Python基于mysql实现学生管理系统
2019/02/21 Python
PyQtGraph在pyqt中的应用及安装过程
2019/08/04 Python
Python类的绑定方法和非绑定方法实例解析
2020/03/04 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
2020/04/08 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
2020/05/26 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
英国假睫毛购买网站:FalseEyelashes.co.uk
2018/05/23 全球购物
SCDKey德国:全球领先的数字游戏市场
2019/04/09 全球购物
机械工程系毕业生求职信
2013/09/27 职场文书
初二政治教学反思
2014/01/12 职场文书
后备干部培训方案
2014/05/22 职场文书
生日庆典策划方案
2014/06/02 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书
windows server2008 开启端口的实现方法
2022/06/25 Servers