我有以下代码:
$nav_menu_args = array('fallback_cb' => '','menu' => 'menu', 'menu_class' => 'menu_class');
$x = wp_nav_menu( apply_filters( 'widget_nav_menu_args', $nav_menu_args, 'menu', $args ) );
$pattern = '#<ul([^>]*)>#i';
$replacement = '<ul$1 data-attr="abc">'; // this is a wrong
echo preg_replace( $pattern, $replacement, $x );
我正在尝试通过更改模式将 data-attr
添加到 ul
,而不通过 Walker_Nav_Menu
进行更改。
我想要做的是有一个这样的列表:
<ul class="menu_class" data-attr="abc">
<li><li>
<li>
<ul>
<li></li>
</ul>
<li>
</ul>
但我的内部 ul 上也有一个 data-attr
,就像这样。
<ul class="menu_class" data-attr="abc">
<li><li>
<li>
<ul data-attr="abc">
<li></li>
</ul>
<li>
</ul>
我错过了什么?
最佳答案
您可以添加要替换的对象的数量,这样它只需要第一个 ul
。
echo preg_replace( $pattern, $replacement, $x, 1 ); // 1 at the end to replace only the first occurence
或者只更改 wp_nav_menu 的 items_wrap 键。
$nav_menu_args = array('fallback_cb' => '','menu' => 'menu', 'items_wrap' => '<ul class="menu_class" data-attr="abc">%3$s</ul>');
关于php - 将数据属性添加到 wp_nav_menu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30649561/