wp_nav_menu()是否有类似items_wrap的<li>/<a>自定义属性方案?
wp_nav_menu没有专门用于自定义
items_wrap),但可以通过WordPress提供的过滤器钩子实现需求,以下是两种场景的具体实现:给
使用nav_menu_item_attributes过滤器,该钩子可直接修改
add_filter('nav_menu_item_attributes', 'add_data_attr_to_menu_li', 10, 3); function add_data_attr_to_menu_li($atts, $item, $args) { // 可根据菜单项目信息设置动态值,比如读取自定义字段 $width_value = 'width'; $atts['data-width'] = $width_value; return $atts; }
给标签添加data属性
使用nav_menu_link_attributes过滤器,用于修改菜单链接的属性:
add_filter('nav_menu_link_attributes', 'add_data_attr_to_menu_link', 10, 3); function add_data_attr_to_menu_link($atts, $item, $args) { $width_value = 'width'; $atts['data-width'] = $width_value; return $atts; }
针对特定菜单生效
如果只需要给某个特定菜单添加属性,可以通过判断菜单的主题位置或ID来实现:
add_filter('nav_menu_link_attributes', 'add_data_attr_to_specific_menu', 10, 3); function add_data_attr_to_specific_menu($atts, $item, $args) { // 替换成你的菜单主题位置或ID if ($args->theme_location == 'primary') { $atts['data-width'] = 'width'; } return $atts; }
将上述代码添加到主题的functions.php文件中即可生效。
内容的提问来源于stack exchange,提问作者JDawwgy
相关产品推荐
相关产品推荐

