【问题标题】:Print WordPress menu in a tag在标签中打印 WordPress 菜单
【发布时间】:2020-11-11 13:48:53
【问题描述】:

我有一些 WordPress 导航菜单,我想在 <a> 标签下打印每个导航菜单。我尝试了以下代码:

<?php
    wp_nav_menu(
        array(
            'menu'           => 'Main Menu',
            'theme_location' => 'api-footer-main',
            'menu_class'     => 'hex__footer_link', 
            'container'      => 'a',
        )
    );
?>

尝试使用&lt;a&gt; 作为容器,但这是打印:

<ul>
    <li><a>Menu</a></li>
    <li><a>Menu</a></li>
    <li><a>Menu</a></li>
</ul>

我想删除整个&lt;ul&gt;&lt;li&gt; 结构。我的菜单应打印为:

<a>Menu</a>
<a>Menu</a>

我也尝试了以下方法,删除了&lt;ul&gt; 标签,但&lt;li&gt; 仍然存在:

<?php
function wp_nav_menu_no_ul() {
    $options = array(
        'echo'           => false,
        'container'      => false,
        'theme_location' => 'api-footer-main',
        'fallback_cb'    => 'fall_back_menu'
    );
    
    $menu = wp_nav_menu( $options );
    echo preg_replace( array(
        '#^<ul[^>]*>^<li[^>]*>#',
        '#</li></ul>$#'
    ), '', $menu );
}

function fall_back_menu() {
    return;
}

我使用 &lt;?php wp_nav_menu_no_ul(); ?&gt; 调用它

我怎样才能做到这一点?

【问题讨论】:

  • 你必须使用导航助行器。
  • 这甚至没有意义......菜单通常包含链接,并且链接不能嵌套在 HTML 中。不知道你在这里的意思是什么,请澄清你的问题。
  • 您可能对container 的含义有误解吗?这是 WP 将 围绕 生成的菜单。如果您想现有链接之后输出菜单,则应将其放在模板文件中的正确位置。
  • 你只是想要一堆没有&lt;ul&gt;&lt;li&gt; 东西的&lt;a&gt; 标签吗?这是你的问题吗?
  • @ChrisHaas 是的,你是对的,但请注意我也想为 menu 添加自定义类

标签: php wordpress


【解决方案1】:

您可以尝试使用strip_tags php 函数,例如:

$options = array(
        'echo' => false,
        'container' => false,
        'theme_location' => 'api-footer-main',
        'fallback_cb'=> 'fall_back_menu'
    );
echo strip_tags(wp_nav_menu( $options ), '<a>' );

here

要添加class,请在function.php中添加以下代码:

function add_menuclass($ulclass) {
   return preg_replace('/<a /', '<a class="some-class"', $ulclass);
}
add_filter('wp_nav_menu','add_menuclass');
猜你喜欢
  • 2021-03-26
  • 1970-01-01
  • 2015-05-05
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 1970-01-01
  • 2016-12-26
  • 1970-01-01
相关资源
最近更新 更多