wordpress调用自定义菜单
wordpress要调用自定义菜单首先要注册菜单,将代码添加到主题文件夹下的function.php中,比如wordpress自带主题2019的定义如下
1 2 3 4 5 6 7 8 | // This theme uses wp_nav_menu() in two locations. register_nav_menus( array ( 'menu-1' => __( 'Primary' , 'twentynineteen' ), 'footer' => __( 'Footer Menu' , 'twentynineteen' ), 'social' => __( 'Social Links Menu' , 'twentynineteen' ), ) ); |
这个表示导航栏的名称,左边是别名,右边是名称。别名会用在导航栏的调用上,名称则显示在菜单后台页面上
添加上述函数后,进入wp后台,在左侧菜单的“外观”里即多了“菜单”选项,primary,footer menu,social links menu就是可选的显示位置
在主题的header.php对应位置,引用导航栏。需要用到下面这个函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php if ( has_nav_menu( 'menu-1' ) ) : ?><?php wp_nav_menu( array $args = array ( 'menu' => "" , // (int|string|WP_Term) Desired menu. Accepts a menu ID, slug, name, or object. 'menu_class' => "" , // (string) CSS class to use for the ul element which forms the menu. Default 'menu'. 'menu_id' => "" , // (string) The ID that is applied to the ul element which forms the menu. Default is the menu slug, incremented. 'container' => "" , // (string) Whether to wrap the ul, and what to wrap it with. Default 'div'. 'container_class' => "" , // (string) Class that is applied to the container. Default 'menu-{menu slug}-container'. 'container_id' => "" , // (string) The ID that is applied to the container. 'fallback_cb' => "" , // (callable|bool) If the menu doesn't exists, a callback function will fire. Default is 'wp_page_menu'. Set to false for no fallback. 'before' => "" , // (string) Text before the link markup. 'after' => "" , // (string) Text after the link markup. 'link_before' => "" , // (string) Text before the link text. 'link_after' => "" , // (string) Text after the link text. 'echo' => "" , // (bool) Whether to echo the menu or return it. Default true. 'depth' => "" , // (int) How many levels of the hierarchy are to be included. 0 means all. Default 0. 'walker' => "" , // (object) Instance of a custom walker class. 'theme_location' => "" , // 指定显示的导航名,如果没有设置,则显示第一个(如果调用多个菜单这项一定要加)(string) Theme location to be used. Must be registered with register_nav_menu() in order to be selectable by the user. 'items_wrap' => "" , // (string) How the list items should be wrapped. Default is a ul with an id and class. Uses printf() format with numbered placeholders. 'item_spacing' => "" , // (string) Whether to preserve whitespace within the menu's HTML. Accepts 'preserve' or 'discard'. Default 'preserve'. ) ); ?><?php endif ; ?> |
当然有些参数是可选的,可根据实际需要进行调用
2019主题的调用比较简单
1 2 3 4 5 6 7 8 9 10 11 | <?php if ( has_nav_menu( 'menu-1' ) ) : ?> <?php wp_nav_menu( array ( 'menu_class' => 'menu clearfix' , 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>' , ) ); ?> <!-- #site-navigation --> <?php endif ; ?> |
更多详情可参考https://developer.wordpress.org/reference/functions/wp_nav_menu/
1 2 3 4 5 6 7 8 9 10 11 12 | <?php if ( has_nav_menu( 'footer' ) ) : ?> <?php wp_nav_menu( array ( 'theme_location' => 'footer' , //调用具体的位置菜单,否则默认显示第一个创建的菜单 'menu_class' => '' , 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>' , ) ); ?> <!-- #site-navigation --> <?php endif ; ?> |
来个中文版的,更容易理解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php $parameter = array ( 'theme_location' => '' , //指定显示的导航名,如果没有设置,则显示第一个 'menu' => 'header-menu' , 'container' => 'nav' , //最外层容器标签名 'container_class' => 'primary' , //最外层容器class名 'container_id' => '' , //最外层容器id值 'menu_class' => 'sf-menu' , //ul标签class 'menu_id' => 'topnav' , //ul标签id 'echo' => true, //是否打印,默认是true,如果想将导航的代码作为赋值使用,可设置为false 'fallback_cb' => 'wp_page_menu' , //备用的导航菜单函数,用于没有在后台设置导航时调用 'before' => '' , //显示在导航a标签之前 'after' => '' , //显示在导航a标签之后 'link_before' => '' , //显示在导航链接名之后 'link_after' => '' , //显示在导航链接名之前 'items_wrap' => '<ul id="%1$s">%3$s</ul>' , 'depth' => 0, //显示的菜单层数,默认0,0是显示所有层 'walker' => '' //调用一个对象定义显示导航菜单 ); wp_nav_menu( $parameter ); ?> |

加微信交流
标签:
wordpress
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2014-06-20 微信广告自助平台即将上线 让每个人都有钱赚