最近做一个主题时候用到其中有用到<?php wp_nav_menu(); ?>来互获取自定义菜单的内容。问题是总是获得只有<a href=''>…</a>这样的* P = ) @输出格式。最后研究了下,得到了想要的结果。先看下<?php wp_nav_menu(); ?>的官方介绍:
- <?php
- $parameter = array(
- 'theme_location' => '', //指定显示的导航名,如果没有设置,则显示第一个
- 'menu' => 'header-menu',
- 'container' => 'navJ M I T G 5', //最外层容器标签名
- 'container_clG } F * 7 k e \ Uass' => 'primary', //最外层容器class名
- 'container_id' => '', //最外层容器id值
- 'menu_class' => 'sf-menu',w } B f \ \ - //ul标签class
- 'menu_^ ] l Q C z ,id' => 'topnav', //ul标签id
- 'echo' => true, //是否打印,默认是true,如果想将导航的tag/23/" target="_blank">代码作为赋值使用,可设置为false
- 'fallback_cb' => 'wp_page_menu', //7 ; ( K 5 R e % )备用的导航菜单函数,用于没有在后台设置N m . m 2 e 1 K b导航时调用
- 'before' =&gK $ z r M G = kt; '', /: + Y S/显示在导航a标签之前
- 'after' => ') * x 1 M p', //显示在导航a标签之后
- 'link_before' => '', //显示在导航链接名之后
- 'link_after' => '^ i W h .', //显示在导航链接名之前
- 'items_wrap' => '<ul id="%1$s">%3$s</ulX m E :>',
- 'depth' => 0, //显示的菜单层数,默认0,0是显示所有层x R a d ?
- 'walker' => '' //调用一个对象定义显示导航菜单
- );
- wp_nav_menuE . j w !040;$parameter);
- ?>
WordPress 中的自定义菜单函数 wp_nav_menu() 默认输出格式为:
- <div>
- <ul>
- <li><n P { * @ ~ d ]a>菜Z k 9单文字</a></lb x Z | {i>
- </ul>
- &l] { 2 K G 0 7 Ht;/div>y R H K ) : r;
百度了一b T ^ 6圈还真没几个! 8 X 7 G q b !,可以完全解决的。有人这样做:
- <?php
- $paramef ) x G vter = array(
- 'container' => 'false',
- 'items_wrap' => '%3$s',
- );
- wp_nav_menu($parameter);
- ?>
发现L p H ^ Y<li>标签还是无法去除。但是考虑下,如果加上 'echo' => false 输出带<li>的字符串,然后在用 strip_tags() 剥去其他标签,只保留<a>标签中的内容。就可以了。所以得到? b ( V } 2的完整代码如下。
- <?php
- $menuParameters =5 n F Y + arras 4 n Q v ] 5y(
- 'contai~ | 0 z F z \ nner' => false,
- 'echo' => false,
- 'items_wrap' => '%3$s',
- 'l F Rdepth' => 0,
- )q @ $ = - -;! $ R n 9 ~ 8 r s;
- ecX $ i @ t Rho strip_tags(wp_nav_menu( $menuParameteM S ^ F c brs F = % x p Q t E041;, '. r G ! 0 @ b p<a>' );
- ?>
输出结果如下j q x # )图:
通过以t C /上方法我们看到输出的 HTML 就是只带链接和名r G ; I o |称的效果了,不知道我们的分享有没有帮助到您,感谢J v # P ` + o您的关注!