删除所有导航菜单类(但保留有用的类...)

时间:2014-02-08 作者:Lisa

我正在尝试删除所有菜单项类(除了.current-menu-{item/parent/ancestor} 和.menu-item-has-children)

function custom_nav_menu_css_class($classes) {
    $classes = preg_replace(\'/^((menu|page)[-_\\w+]+)+/\', \'\', $classes);
    return $classes;
}
add_filter(\'nav_menu_css_class\', \'custom_nav_menu_css_class\');
这几乎完成了任务,只是它删除了.menu-item-has-children? 你知道我应该改变什么吗,不让它被删除?

(请注意,我不想使用定制助行器……)

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

您可以使用白名单,并用更可读的内容替换正则表达式:

add_filter( \'nav_menu_css_class\', function( $classes ) {

    $allowed = [
        \'menu-item-has-children\',
        \'current-menu-item\'
    ];

    return array_intersect( $classes, $allowed );
});
这也会使维护白名单变得更容易。

结束

相关推荐

从查询中删除类别(显示Archive.php中的所有帖子)pre_get_post()

我正在使用pre_get_posts() 允许在任何类别存档上显示所有帖子。这是因为我将提供一个使用同位素的javascript排序和过滤方法。js。任何类别页面都将输出所有帖子,但任何不属于该类别的帖子最初都将被隐藏。function show_all_cats( $query ) { if ( !$query->is_main_query() ){ return; } if ( is_admin() ){