Php 如何更改小部件菜单容器

Php 如何更改小部件菜单容器,php,wordpress,navigation,widget,sidebar,Php,Wordpress,Navigation,Widget,Sidebar,如果我将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">

如果我将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>

如何将容器更改为nav? 我想这样加上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>


谢谢回答)

要更改菜单容器,请使用过滤器挂钩
wp\u nav\u menu\u args

将以下代码粘贴到当前活动的theme 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' );

有关更多帮助:

您可以使用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');
函数更改子菜单类($menu){ $menu=preg_replace(“//”、“/”、$menu); 返回$menu; } 添加过滤器(“wp\U导航菜单”,“更改子菜单\U类”);
对于要更改的li和其他标签,使用相同的pregreplace功能。

谢谢。但是我将无法识别结束div来更改它=)是的,它不会识别结束div,因为您必须用替换它。然后您可以尝试使用php dom解析器。