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 数组的指针操作实现代码
Feb 08 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
php curl_init函数用法
Jan 31 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
Jun 12 PHP
php smarty truncate UTF8乱码问题解决办法
Jun 13 PHP
ThinkPHP之用户注册登录留言完整实例
Jul 22 PHP
php时间戳格式化显示友好的时间函数分享
Oct 21 PHP
php中socket的用法详解
Oct 24 PHP
php mysql like 实现多关键词搜索的方法
Oct 29 PHP
ThinkPHP简单使用memcache缓存的方法
Nov 15 PHP
PHP实现RTX发送消息提醒的实例代码
Jan 03 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
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
php将数组转换成csv格式文件输出的方法
2015/03/14 PHP
基于JQuery的一个简单的鼠标跟随提示效果
2010/09/23 Javascript
使用js写的一个简易的投票
2013/11/27 Javascript
js调试系列 断点与动态调试[基础篇]
2014/06/18 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
2016/06/08 Javascript
浅谈js中的引用和复制(传值和传址)
2016/09/18 Javascript
javascript中Date对象的使用总结
2016/11/21 Javascript
vuejs2.0子组件改变父组件的数据实例
2017/05/10 Javascript
vue实现全选和反选功能
2017/08/31 Javascript
vue使用xe-utils函数库的具体方法
2018/03/06 Javascript
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
pyramid配置session的方法教程
2013/11/27 Python
pyv8学习python和javascript变量进行交互
2013/12/04 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
Python中extend和append的区别讲解
2019/01/24 Python
python实现拼图小游戏
2020/02/22 Python
python3.7添加dlib模块的方法
2020/07/01 Python
Python xlrd/xlwt 创建excel文件及常用操作
2020/09/24 Python
用Python自动清理系统垃圾的实现
2021/01/18 Python
Python爬虫入门教程01之爬取豆瓣Top电影
2021/01/24 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
机电专业个人自荐信格式模板
2013/09/23 职场文书
就业自我评价
2014/02/04 职场文书
节能环保口号
2014/06/12 职场文书
交通志愿者活动总结
2014/06/27 职场文书
乡镇党的群众路线对照检查材料
2014/09/24 职场文书
放假通知
2015/04/14 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
终止解除劳动合同证明书
2015/06/17 职场文书
毕业班工作总结
2015/08/10 职场文书
Python操作CSV格式文件的方法大全
2021/07/15 Python