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 开源框架22个简单简介
Aug 24 PHP
PHP 数组遍历顺序理解
Sep 09 PHP
PHP教程 预定义变量
Oct 23 PHP
for循环连续求和、九九乘法表代码
Feb 20 PHP
php正则表达式使用的详细介绍
Apr 27 PHP
PHP同时连接多个mysql数据库示例代码
Mar 17 PHP
微信营销平台系统?刮刮乐的开发
Jun 10 PHP
PHP反向代理类代码
Aug 15 PHP
PHP基于imap获取邮件实例
Nov 11 PHP
php将access数据库转换到mysql数据库的方法
Dec 24 PHP
ThinkPHP中调用PHPExcel的实现代码
Apr 08 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 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仿discuz分页效果代码
2008/10/02 PHP
php下拉选项的批量操作的实现代码
2013/10/14 PHP
PHP 配置后台登录以及模板引入
2017/01/24 PHP
jquery animate图片模向滑动示例代码
2011/01/26 Javascript
yepnope.js 异步加载资源文件
2011/09/08 Javascript
jQuery Ajax请求状态管理器打包
2012/05/03 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
jquery选择器原理介绍($()使用方法)
2014/03/25 Javascript
url传递的参数值中包含&amp;时,url自动截断问题的解决方法
2016/08/02 Javascript
浅析Jquery操作select
2016/12/13 Javascript
angularJS开发注意事项
2018/05/26 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
关于Vue源码vm.$watch()内部原理详解
2019/04/26 Javascript
layui下拉列表select实现可输入查找的方法
2019/09/28 Javascript
vue之延时刷新实例
2019/11/14 Javascript
[05:26]TI10典藏宝瓶套装外观展示
2020/07/03 DOTA
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
python3使用SMTP发送简单文本邮件
2018/06/19 Python
Pandas 数据处理,数据清洗详解
2018/07/10 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
2019/01/05 Python
Python assert语句的简单使用示例
2019/07/28 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
2020/04/26 Python
python实现二分类和多分类的ROC曲线教程
2020/06/15 Python
flask开启多线程的具体方法
2020/08/02 Python
英国日常交易网站:Wowcher
2018/09/04 全球购物
Myprotein台湾官方网站:全球领先的运动营养品牌
2018/12/10 全球购物
介绍一下JNDI的基本概念
2013/07/26 面试题
会计系毕业生求职信
2014/05/28 职场文书
领导干部贪图享乐整改措施
2014/09/21 职场文书
学校党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
农贸批发市场管理制度
2015/08/07 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
详解JAVA中的OPTIONAL
2021/06/14 Java/Android