php - 将数据属性添加到 wp_nav_menu

标签 php wordpress menu nav custom-data-attribute

我有以下代码:

$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/

相关文章:

php - CodeIgniter Active Record 多个 "where"和 "or"语句

php - 在模型中使用查询的 Codeigniter 分页

php - 根据选择的运输有条件地隐藏 WooCommerce 中的“结账”字段

java - 获取选项菜单以显示在系统栏中

html - 如何在主页菜单中突出显示事件页面?

php - php执行时间超过30秒

php - 在没有 Twig 的情况下使用 Symfony 表单

php - 警告 : sizeof(): Parameter must be an array or an object that implements Countable

javascript - 未捕获的语法错误 : Unexpected token ILLEGAL

html - 是否可以仅使用 UL/LI 和 CSS 制作此菜单?