使用wp_nav_menu </dd> </li>将菜单<li>更改为<dd>

时间:2013-07-10 16:46:57

标签: php wordpress

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

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

<dl>
  <dd></dd>
  <dd></dd>
  <dd></dd>
</dl>

我将wordpress的菜单调用配置为:

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发出的包裹<li>更改为<dd>,我需要编写自定义助行器。

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

1 个答案:

答案 0 :(得分:0)

digwp提供了比步行者更简单的方法

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

在你的functions.php

// 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;
}

并在你的主题中调用它:

<?php if (function_exists(clean_custom_menus())) clean_custom_menus(); ?>

所以你必须编辑$menu_name到菜单slug。

这是source