0

我使用 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'          => '') );

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

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

4

1 回答 1

0

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

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

在你的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。

这是来源

于 2013-07-10T20:04:22.577 回答