PHP 学习笔记 (四)
发布日期:2025-05-03 00:07:34 浏览次数:10 分类:精选文章

本文共 1871 字,大约阅读时间需要 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]']; 直接执行。

上一篇:Redis入门概述
下一篇:php 子进程监听消息,swoole学习笔记之多线程端口监听问题记录 多进程epoll模式...

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2026年06月19日 08时00分03秒