web-dev-qa-db-ja.com

get_search_form()はパラメータを考慮に入れていないようです

手動でメニューを作成し、検索フォームを含めようとしています。

これは、 http://codex.wordpress.org/Function_Reference/wp_get_nav_menu_items にあるWordpress Docsの「簡単なメニューリストの作成」から引用されています。

メニューを完成させる前に追加の<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" role = "navigation">

<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>

Echo = falseを指定したにもかかわらず、メニューの前に検索が表示されるのはなぜでしょうか。

1
php-b-grader

これが原因である可能性があります。

Searchform.phpが存在する場合、$ echoパラメータは無視されます。これに関してはWordPress Tracに問題があります。

コーデックスから: http://codex.wordpress.org/Function_Reference/get_search_form#Notes

2
Michael