【问题标题】:How to change widget menu container如何更改小部件菜单容器
【发布时间】:2019-03-22 20:31:45
【问题描述】:

如果我将 dynamic_sidebar() 添加到主题并在管理面板中插入菜单小部件,wp 会生成这样的结构:

<div id="nav_menu" class="widget widget_nav_menu">
    <div class="menu-container">
        <ul id="menu" class="menu">
            <li id="#" class="menu-item">
                <a href="#">Item 1</a>
            </li>
            <li id="#" class="menu-item">
                <a href="#">Item 2</a>
            </li>
            <li id="#" class="menu-item">
                <a href="#">Item 3</a>
            </li>
        </ul>
    </div>
</div>

如何将容器更改为导航? 我想像这样添加Shema

<div id="nav_menu" class="widget widget_nav_menu" itemscope itemtype="http://www.schema.org/SiteNavigationElement">
    <nav class="menu-container">
        <ul id="menu" class="menu">
            <li id="#" class="menu-item" itemprop="name">
                <a href="#" itemprop="url">Item 1</a>
            </li>
            <li id="#" class="menu-item" itemprop="name">
                <a href="#" itemprop="url">Item 2</a>
            </li>
            <li id="#" class="menu-item" itemprop="name">
                <a href="#" itemprop="url">Item 3</a>
            </li>
        </ul>
    </nav>
</div>

感谢回答)

【问题讨论】:

    标签: php wordpress navigation widget sidebar


    【解决方案1】:

    要更改菜单容器,请使用过滤器挂钩wp_nav_menu_args

    将以下代码粘贴到当前活动主题functions.php文件中

    function my_nav_menu_args( $args = '' ) {
    
           if( 'primary' == $args['theme_location'] )
           {
              if ( $args['container'] == 'div' ) {
                  $args['container'] = 'nav';
              }
            }
    
            return $args;
        }
    
        add_filter( 'wp_nav_menu_args', 'my_nav_menu_args' );
    

    更多帮助:click Here

    【讨论】:

      【解决方案2】:

      你可以用 pregreplace 替换标签。

      function change_submenu_class($menu) {  
        $menu = preg_replace('/<div id="nav_menu" class="widget widget_nav_menu">/','/<div id="nav_menu" class="widget widget_nav_menu" itemscope itemtype="http://www.schema.org/SiteNavigationElement">/',$menu);  
        return $menu;  
      }  
      add_filter('wp_nav_menu','change_submenu_class');
      

      对于 li 和您要更改的其他标签具有相同的 pregreplace 函数。

      【讨论】:

      • 谢谢。但是我将无法识别关闭的 div 来更改它 =)
      • 是的,它不会识别关闭的 div,因为您必须用 替换它。那你可以试试php dom解析器。
      猜你喜欢
      • 2014-06-02
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多