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' => '', 'depth' => 0, 'walker' => '' );
%3$s参数说明:
$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]']; 直接执行。