首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用wp_nav_menu将menu <li>更改为<dd>

使用wp_nav_menu将menu <li>更改为<dd>
EN

Stack Overflow用户
提问于 2013-07-11 00:46:57
回答 1查看 754关注 0票数 0

我使用Zurb Foundation在HTML中创建了一个主题,然后将其集成到一个WordPress主题中。

在我的主题中,主要的导航部分,其最基本的形式是:

代码语言:javascript
复制
<dl>
  <dd></dd>
  <dd></dd>
  <dd></dd>
</dl>

我这样配置了wordpress的菜单调用:

代码语言:javascript
复制
wp_nav_menu( array(
    'theme_location' => 'primary',
    'menu'            => '',
    'container'       => '',
    'container_class' => '',
    'container_id'    => '',
    'menu_class'      => 'menu',
    'menu_id'         => '',
    'echo'            => true,
    'fallback_cb'     => 'wp_page_menu',
    'before'          => '',
    'after'           => '',
    'link_before'     => '',
    'link_after'      => '',
    'items_wrap'      => '<dl id="tabnav" class="sub-nav">%3$s</dl>',
    'depth'           => 0,
    'walker'          => '') );

但是为了改变wordpress提供给<dd>的包装<li>,我需要编写一个自定义的walker。

我查看了一些自定义的walkers,可以看到逻辑的一部分,但是每次我想要为菜单使用自定义html时创建一个类是唯一/最有效的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2013-07-11 04:04:23

digwp提供了一种比walker更简单的方法

创建一个从头开始构建菜单的函数。

在你的functions.php中

代码语言:javascript
复制
// custom menu example @ http://digwp.com/2011/11/html-formatting-custom-menus/
function clean_custom_menus() {
    $menu_name = 'nav-primary'; // specify custom menu slug
    if (($locations = get_nav_menu_locations()) && isset($locations[$menu_name])) {
        $menu = wp_get_nav_menu_object($locations[$menu_name]);
        $menu_items = wp_get_nav_menu_items($menu->term_id);

        $menu_list = '<dl>' ."\n";
        foreach ((array) $menu_items as $key => $menu_item) {
            $title = $menu_item->title;
            $url = $menu_item->url;
            $menu_list .= "\t\t\t\t\t". '<dd><a href="'. $url .'">'. $title .'</a></dd>' ."\n";
        }
        $menu_list .= "\t\t\t". '</dl>' ."\n";
    } else {
        // $menu_list = '<!-- no list defined -->';
    }
    echo $menu_list;
}

在你的主题中调用它:

代码语言:javascript
复制
<?php if (function_exists(clean_custom_menus())) clean_custom_menus(); ?>

因此,您必须将$menu_name编辑为您的菜单插件。

这是source

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17576352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档