【问题标题】:php code optimization for wordpress nav menuwordpress 导航菜单的 php 代码优化
【发布时间】:2012-05-29 03:37:35
【问题描述】:

我制作了一个功能,可以在我的 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() 函数的封装。它基于 $type 变量在调用 wp_nav_menu() 函数之前和之后添加了一些 html 代码。前 5 种情况的前后代码均无。在最后两种情况下也有相当多的代码重复。我还想包括一个案例,其中提供给 $type 变量的字符串与任何案例都不匹配,并根据此回显一条消息。

我最初用很多“if”语句而不是“case”来编写这个函数,但其​​中任何一个对我来说都不好看。

任何帮助将不胜感激。

【问题讨论】:

    标签: php wordpress optimization


    【解决方案1】:

    我会设置默认的 wrap_before 和 wrap_after,类似于:

    $wrap_before = '';
    $wrap_after = '';
    
    switch ($type)
    {
        case 'basic-tabs' :
            $menu_class = 'nav nav-tabs';
            break;
        case 'basic-tabs' :
            $menu_class = 'nav nav-tabs nav-stacked';
            break;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-18
      • 2019-09-08
      • 2015-04-04
      • 2017-03-30
      • 2013-09-26
      相关资源
      最近更新 更多