Я сделал функцию, чтобы вставить меню навигации в мою тему WordPress. Мне понравились ваши предложения о том, как сделать это лучше и, возможно, меньше. Вот:
function cosmos_nav_menu($theme_location, $type) { switch ( $type ) { case 'basic-tabs' : $menu_class = 'nav nav-tabs'; $wrap_before = ''; $wrap_after = ''; break; case 'stacked-tabs' : $menu_class = 'nav nav-tabs nav-stacked'; $wrap_before = ''; $wrap_after = ''; break; case 'basic-pills' : $menu_class = 'nav nav-pills'; $wrap_before = ''; $wrap_after = ''; break; case 'stacked-pills' : $menu_class = 'nav nav-pills nav-stacked'; $wrap_before = ''; $wrap_after = ''; break; case 'list' : $menu_class = 'nav nav-list'; $wrap_before = ''; $wrap_after = ''; break; case 'navbar' : $menu_class = 'nav'; $wrap_before = "<div class=\"navbar\">\n<div class=\"navbar-inner\">\n<div class=\"container\">\n"; $wrap_before .= "<a class=\"btn btn-navbar\" data-toggle=\"collapse\" data-target=\".nav-collapse\">\n"; $wrap_before .= "<span class=\"icon-bar\"></span>\n<span class=\"icon-bar\"></span>\n<span class=\"icon-bar\"></span>\n</a>\n"; $wrap_before .= "<div class=\"nav-collapse\">\n"; $wrap_after = "\n</div>\n</div>\n</div>\n</div>"; break; case 'navbar-brand' : $menu_class = 'nav'; $wrap_before = "<div class=\"navbar\">\n<div class=\"navbar-inner\">\n<div class=\"container\">\n"; $wrap_before .= "<a class=\"btn btn-navbar\" data-toggle=\"collapse\" data-target=\".nav-collapse\">\n"; $wrap_before .= "<span class=\"icon-bar\"></span>\n<span class=\"icon-bar\"></span>\n<span class=\"icon-bar\"></span>\n</a>\n"; $wrap_before .= "<a class=\"brand\" href=\"" . home_url('/') . "\">" . esc_html(get_bloginfo('name', 'display')) . "</a>\n"; $wrap_before .= "<div class=\"nav-collapse\">\n"; $wrap_after = "\n</div>\n</div>\n</div>\n</div>"; break; } echo $wrap_before; wp_nav_menu(array( 'theme_location' => $theme_location, 'container' => false, 'menu_class' => $menu_class, 'walker' => new Bootstrap_Walker() )); echo $wrap_after; }
Это в основном оболочка функции wordpress wp_nav_menu (). Он добавляет некоторый код html до и после вызова функции wp_nav_menu () на основе переменной $ type. До и после кода для первых 5 случаев нет. Кроме того, в двух последних случаях также наблюдается дублирование кода. Я также хотел бы включить случай, когда строка, заданная переменной $ type, не соответствует ни одному из случаев и соответствует сообщению echo.
Я изначально закодировал эту функцию с множеством «if» утверждений вместо «case», но ни один из них не выглядел хорошо для меня.
Любая помощь будет оценена.