我使用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提供给<dd>的包装<li>,我需要编写一个自定义的walker。
我查看了一些自定义的walkers,可以看到逻辑的一部分,但是每次我想要为菜单使用自定义html时创建一个类是唯一/最有效的方法吗?
发布于 2013-07-11 04:04:23
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编辑为您的菜单插件。
这是source
https://stackoverflow.com/questions/17576352
复制相似问题