Wordpress get_search_form()似乎没有将参数纳入考虑

问题描述:

我正在手动创建菜单并试图包含搜索表单。Wordpress get_search_form()似乎没有将参数纳入考虑

这是从WordPress的文档“建立一个简单的菜单列表”http://codex.wordpress.org/Function_Reference/wp_get_nav_menu_items

在完成菜单并添加搜索表单之前,我已添加额外的<li>元素。

  // Get the nav menu based on $menu_name (same as 'theme_location' or 'menu' arg to wp_nav_menu) 
      // This code based on wp_nav_menu's code to get Menu ID from menu slug 

      $menu_name = 'main-menu'; 

      if (($locations = get_nav_menu_locations()) && isset($locations[ $menu_name ])) { 

       $menu = wp_get_nav_menu_object($locations[ $menu_name ]); 

       $menu_items = wp_get_nav_menu_items($menu->term_id); 

       $menu_list = '<ul id="menu-' . $menu_name . '">'; 

       foreach ((array) $menu_items as $key => $menu_item) { 
        $title = $menu_item->title; 
        $url = $menu_item->url; 
        $menu_list .= '<li><a href="' . $url . '">' . $title . '</a></li>'; 
       } 
       $menu_list .= '<li>' . get_search_form(false) . '</li>'; 
       $menu_list .= '</ul>'; 
      } else { 
       $menu_list = '<ul><li>No Menu</li></ul>'; 
      } 
      echo $menu_list; 

问题出在输出。

< DIV CLASS = “mainnav” 角色= “导航” >

<form role="search" method="get" id="searchform" action="/"> 
    <input type="text" value="" name="s" id="s" size="40" placeholder="Search" alt="Site Search"> 
    <input type="submit" id="searchsubmit" value="Search"> 
</form> 
<ul id="menu-main-menu"> 
    <li><a href="#">Home</a></li> 
    <li><a href="#">Sample Page</a></li> 
    <li></li> 
</ul> 

</DIV >

有人能告诉我,为什么搜索菜单之前,即使我指定回声打印=假?

如果你的主题有一个searchform.php,你可能打到Ticket #16541get_search_form() ignores $echo if searchform.php exists

你的解决方法是好的,如果你只是呼应搜索表单反正,但如果你需要捕获在一个变量的输出,可以解决此与output buffering

我解决了这个问题,将get_search_form()从echo中取出并打印在自己的php块中。

我有一种感觉(没有完全理解),我回应了首先被回应的声明引起了这种有趣的行为。把它放在自己的PHP代码块,而不是附和,但只是调用它直接解决了这一问题:

<?php get_search_form(); ?> 

欢迎对所发生的事情有什么想法,建议或指导?