すべてのメニュー項目クラスを削除しようとしています(.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
を削除しますか?削除から除外するには、何を変更すればよいですか。
(P.S。私はカスタムウォーカーを使用したくないのですが…)
ホワイトリストを使って、正規表現をもっと読みやすいものに置き換えることができます。
add_filter( 'nav_menu_css_class', function( $classes ) {
$allowed = array(
'menu-item-has-children',
'current-menu-item'
);
$output = array();
foreach ( $classes as $class )
{
if ( in_array( $class, $allowed ) )
$output[] = $class;
}
return $output;
});
そうすれば、ホワイトリストも保守しやすくなります。