php - 如何在 wp_nav_menu 中添加类以链接?

标签 php wordpress

我正在尝试制作一个没有 ul 和 li 的 wp 菜单,并将一个类添加到元素中。

我尝试在我的 function.php 中添加这个

function add_menuclass($ulclass) {
  return preg_replace('/<a /', '<a class="list-group-item"', $ulclass, 1);
}
add_filter('wp_nav_menu','add_menuclass');

在我的模板中我有:

<?php
 $menuParameters = array(
   'menu'  => 'Videos',
   'container'       => false,
   'echo'            => false,
   'items_wrap'      => '%3$s',
   'depth'           => 0,
);

  echo strip_tags(wp_nav_menu( $menuParameters ), '<a>' );
?>

但输出仅将类应用于第一项而不是所有 <a>符合预期。

<div class="list-group">
   <a class="list-group-item" href="#">First item</a>
   <a href="#">Second item</a>
</div>

我正在努力实现这一目标,基本上将该类应用到我的所有项目(不确定为什么它只将它应用到一个项目)- 请不要使用 jQuery。

<div class="list-group">
   <a class="list-group-item" href="#">First item</a>
   <a class="list-group-item" href="#">Second item</a>
</div>

最佳答案

this answer 得到提示我发现这是最简洁的关于向菜单的列表项添加类的方法,我使用了 nav_menu_link_attributes适合添加类的过滤器。

在你的 functions.php 中,添加:

function add_menu_link_class( $atts, $item, $args ) {
  if (property_exists($args, 'link_class')) {
    $atts['class'] = $args->link_class;
  }
  return $atts;
}
add_filter( 'nav_menu_link_attributes', 'add_menu_link_class', 1, 3 );

可选地,您可能希望添加向列表项添加类的选项:

function add_menu_list_item_class($classes, $item, $args) {
  if (property_exists($args, 'list_item_class')) {
      $classes[] = $args->list_item_class;
  }
  return $classes;
}
add_filter('nav_menu_css_class', 'add_menu_list_item_class', 1, 3);

现在,在您的模板中,要构建一个菜单,您只需添加两个新参数,例如:

wp_nav_menu([
    'theme_location'=> 'primary_navigation',
    'menu_class'    => 'navbar-nav ml-auto flex-nowrap',
    'list_item_class'  => 'nav-item',
    'link_class'   => 'nav-link m-2 menu-item nav-active'
]);

适用于具有多个具有不同外观的菜单的主题。

关于php - 如何在 wp_nav_menu 中添加类以链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26180688/

相关文章:

php - 与 API 共享 Cookie 来验证用户身份的最佳方式

php - Woocommerce 自定义字段 : some values are not in the order page

html - 样式化 Wordpress 插件复选框

php - 尝试获取 symfony 图像表中存储的用户 ID

PHP/MySQL 我哪里出了问题?

php - 如何使用 php imagick 库使图像看起来像 Canvas 或马桶

php - 在 Woocommerce 商店页面的类别列表中隐藏产品类别

php - 重建 json 数据并删除一个子节点中的重复值

wordpress - <?php wp_link_pages(); ?> 正在处理帖子而不是在页面上显示分页

php - 如何根据模板部分对脚本进行排队?