我正在使用array_intersect()
从我的Wordpress菜单项中删除所有class
es,但列出的除外。然后我使用str_replace
重命名类。这有效,但感觉马虎。有没有更有效的方法呢?
function my_nav_menu_css_class( $classes ) {
$classes = array_intersect( $classes, array(
'current-menu-ancestor',
'menu-item-has-children',
'current-menu-item',
));
$classes = str_replace( 'current-menu-ancestor', 'ancestor', $classes );
$classes = str_replace( 'menu-item-has-children', 'children', $classes );
$classes = str_replace( 'current-menu-item', 'item', $classes );
return $classes;
}
add_filter( 'nav_menu_css_class', 'my_nav_menu_css_class' );
注意:上述类都是条件;它们仅在菜单处于活动状态或下拉菜单时出现。换句话说,尝试这个不起作用:
$rename_classes = array(
'ancestor',
'children',
'item',
);
return str_replace( $classes, $rename_classes, $classes );
在这种情况下,.current-menu-item
假设将替换为.item
,但会替换为.ancestor
(因为它在数组中排在第一位)。所以这不好。有更好的解决方案吗?
答案 0 :(得分:1)
您应该更新CSS以使用“.current-menu-item”。
你在PHP中所做的任何事情都会使网站加载速度稍慢,并且可能会出错。
最好的代码根本就没有代码,只写出解决给定问题所需的最小数量。减少对您的工作,减少错误并为最终用户执行更快。这是一个全面的胜利。
答案 1 :(得分:1)