博客
关于我
PHP 学习笔记 (四)
阅读量:793 次
发布时间:2023-02-28

本文共 1882 字,大约阅读时间需要 6 分钟。

WordPress框架中的一些函数

wp_get_nav_menu($default):根据条件$default 获取menu,默认获取所有的menu

$default = array(
'theme_location' => '',
'menu' => '',
'container' => 'div',
'container_class' => 'menu-{menu_slug}-container',
'container_id' => '',
'menu_class' => 'menu',
'echo' => true,
'fallback_cb' => 'wp_page_menu',
'before' => '',
'after' => '',
'link_before' => '',
'link_after' => '',
'items_wrap' => '
    %3$s
',
'depth' => 0,
'walker' => ''
);

参数说明:

$theme_location: 默认为none,指定注册过的某一个导航菜单,若未指定,则显示第一个。如primary, secondary等。

$menu: 默认为none,使用导航菜单的名称调用菜单,可以使用term_id, slug, name等属性。

$container: 默认为div,是ul的父节点,只支持div和nav标签,也可用false去掉ul父节点的标签。

$container_class: 默认为menu-{menu_slug}-container,是ul父节点的class属性。

$container_id: 默认为none,ul父节点的id。

$menu_class: 默认为menu,ul节点的class属性。

$menu_id: 默认为menu slug,自增长的ul节点的id属性值。

$echo: 默认为true,决定直接显示导航菜单生成的HTML片段。如果想将导航代码作为布局使用,可以设置为false。

$fallback_cb: 默认值为wp_page_menu,用于在后台未设置导航时调用的回调函数。

$items_wrap: 默认为none,使用字符串替换ul的class。

$depth: 默认为0,显示菜单的层级深度,为0时显示所有深度的菜单。

$walker: 默认使用new Walker_Nav_Menu(),可调用自定义的Walker子类对象定义导航菜单的显示方式。

使用Walker子类制作自定义菜单:

Walker类是一个抽象类,该类定义了如何显示导航等,包含4个属性和6个方法:

属性:
$tree_type, $db_fields, $max_pages, $has_children
方法:
start_lvl: 当Walker类达到结构顶层时执行,用于输出开始元素
end_lvl:关闭start_lvl输出的元素标签
start_el: 为每一个元素输出一个开始标签
end_el:关闭start_el 的标签
display_element: 定义如何显示树形结构中的元素(核心方法)
walk: 根据$max_depth循环树形结构中的每一个元素(核心方法)

如果需要自定义导航,可以直接写一个类继承Walker类,重写所有方法。如果改动不大,可以直接继承Walker_NAV_Menu类,重写需要修改的方法即可。

在重写display_element时,$element参数包含当前遍历到的元素信息,如可以使用$element->object_id获取当前元素的term_id。

代码片段:使用add_shortcode('name','function_name')可在系统中产生一个代码片段['name'],可在WordPress后台文章中直接使用,或在代码中使用show_shortcode['[name]']; 直接执行。

转载地址:http://rgvfk.baihongyu.com/

你可能感兴趣的文章
PHP pcntl_fork不能在web服务器中使用的变通方法
查看>>
php private ,public protected三者的区别
查看>>
php PSR规范
查看>>
php rand() 重复,array_rand()函数从另外一个数组中随机取得的一定数量的数组的元素是否会重复?...
查看>>
php redis pub/sub(Publish/Subscribe,发布/订阅的信息系统)之基本使用
查看>>
php redis 集群扩展类文件
查看>>
php redis(2)
查看>>
PHP Redis分布式锁
查看>>
php redis的应用
查看>>
php rss,如何用PHP编写RSS
查看>>
php session超时时间_php怎么设置session超时时间
查看>>
PHP SOAP模块的使用方法:NON-WSDL模式
查看>>
PHP Socket实现websocket(三)Stream函数
查看>>
php Socket通信
查看>>
PHP SPL标准库-迭代器
查看>>
php static 变量
查看>>
PHP Static延迟静态绑定
查看>>
php str_pad();
查看>>
PHP study 环境变量composer
查看>>
PHP trim() 函数
查看>>