WP_NAV_MENU不带参数?

时间:2013-09-22 作者:Radovan Bezak

我很抱歉这个不着边际的问题,但我不明白:

我正在使用wp\\U nav\\U菜单的函数参考,这是我的代码行:

<?php wp_nav_menu( array(\'theme_location\' => \'header-menu\',\'items_wrap\' => \'%3$s\') ); ?>
但菜单显示在<ul><li> 无论如何(我想删除它并使菜单水平)。我可以在items_wrap, 它将始终是默认值<ul>theme\\u位置可能也不起作用,但因为我只有一个菜单,所以它会显示正确的菜单。

如果这很愚蠢的话,我想再次道歉,我想是的,但我需要你的耐心和帮助,我只是一个初学者。

完整索引。php:

<?php get_header(); ?>
<?php if(isset($_GET[\'nav\'])) {
$nav = $_GET[\'nav\']; } ?>
<body>

<div id="topbar">
    <div id="orangebar"></div>
    <div id="top-middle">
        <a href="<?php echo home_url(); ?>"><img id="logo" src="<?php bloginfo(\'template_directory\'); ?>/img/logo.png" /></a>
        <div id="menu">
<?php
remove_all_actions( \'wp_nav_menu_args\' );
remove_all_actions( \'wp_nav_menu\' );

echo "\\n\\n<!-- start menu -->\\n";
wp_nav_menu( array( \'theme_location\' => \'header-menu\', \'items_wrap\' => \'j\' ) );
echo "\\n<!-- end menu -->\\n\\n";
?>
        </div>
    </div>
</div>
<div id="center">
    <div id="centershade"><img id="shade" src="<?php bloginfo(\'template_directory\'); ?>/img/shade.png" /></div>
    <div id="main">

        <a href="facebook link" target="_blank"><img id="fbbutton" src="    <?php bloginfo(\'template_directory\'); ?>/img/buttons/fb.gif" /></a>
        <a href="twitter link" target="_blank"><img id="twitbutton" src="<?php bloginfo(\'template_directory\'); ?>/img/buttons/twitter.gif" /></a>

        <div id="main-content">
            <?php if (!( isset($nav) ) ) { include(\'startpage.php\');} else { include($nav+\'.php\');} ?>

        </div>
    </div>
</div>
<?php get_footer(); ?>
功能。php:

<?php add_action( \'init\', \'register_my_menu\' );

function register_my_menu() {
    register_nav_menu( \'header-menu\', __( \'Header Menu\' ) );
}

?>
好的,请试着克服不规范的命名和奇怪的实现方式,这是三分之一的学习、三分之一的测试和三分之一的开发。。

2 个回复
SO网友:kaiser

这个items_wrap 论点实际上是sprintf-ed参数。

当你看着Core source:

\'items_wrap\' => \'<ul id="%1$s" class="%2$s">%3$s</ul>\'
。。。你看到你必须使用arguments to let core do its work.

sprintf( $args->items_wrap, esc_attr( $wrap_id ), esc_attr( $wrap_class ), $items );
这是%-参数:

  • %1$s -> $wrap_id
  • %2$s -> $wrap_class
  • %3$s -> $items
现在,要更换容器,您需要使用以下物品:

\'items_wrap\' => \'<div id="1%$s" class="%s$s">%3$s</div>\'
请记住,这不是容器。容器本身只允许是divnav 要素但您可以扩展允许的容器元素列表:

$allowed_tags = apply_filters( \'wp_nav_menu_container_allowedtags\', array( \'div\', \'nav\' ) );

SO网友:Charles Clarkson

评论时间太长了。尝试用此代码来代替您最初在问题中发布的代码进行调试:

<?php
remove_all_actions( \'wp_nav_menu_args\' );
remove_all_actions( \'wp_nav_menu\' );

echo "\\n\\n<!-- start menu -->\\n";
wp_nav_menu( array( \'theme_location\' => \'primary\', \'items_wrap\' => \'%3$s\' ) );
echo "\\n<!-- end menu -->\\n\\n";
?>
检查浏览器页面源中的<ul></ul> 标签。

这应该测试是否有任何内容通过PHP使用过滤器覆盖菜单参数或菜单输出。额外的换行符(\\n) 我在echo中放置的语句应该使菜单更容易在浏览器页面源中找到。

好吧,还是一样的结果:评论>div>ul>li。。。

奇怪的以开头的完整标记是什么<!-- start menu --> 议论使用items_wrap 参数已删除,在我的服务器上如下所示:

<!-- start menu -->
<div class="menu-primary-container"><ul id="menu-primary-1" class="menu">
顺便说一句,您可以通过在注释前后添加反勾号来向注释添加代码和标记。在我的键盘上,backtick键位于数字1键的左侧。

结束

相关推荐

Primary and secondary menus

我试图使主菜单上的每个选项卡都链接到次菜单,这样实际上,每个主选项卡都会指向次菜单中的一组选项卡,而不是保持静态。我希望你能帮助我,我不是一个高级WP用户,所以可以使用简单的术语。更新我已经添加了代码,但它已经显示在我的网页和仪表板上,所以我一定是弄错了,所以我将其粘贴在下面,以便您可以看到。我不知道如何找到主弹头,但我想这是我在主弹头上添加的内容。function km_dynamic_secondary_menu_reg() { global $km_nav_menus;