WordPress get_search_form () не принимает параметр во внимание - PullRequest
0 голосов
/ 26 февраля 2012

Я создаю меню вручную и пытаюсь включить форму поиска.

это взято из Wordpress Docs "Создание простого списка меню" в http://codex.wordpress.org/Function_Reference/wp_get_nav_menu_items.

Я добавил дополнительный элемент

перед заполнением меню и добавил форму поиска.
            // 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;

Проблема в выводе.

Может кто-нибудь сказать мне, почему поиск печатает перед меню, хотя я указываю echo = false?

Ответы [ 2 ]

2 голосов
/ 20 апреля 2012

Если в вашей теме есть searchform.php, вы, вероятно, нажимаете Ticket # 16541 : get_search_form () игнорирует $ echo, если searchform.php существует .

Ваш обходной путь хорош, если вы все равно повторяете форму поиска, но если вам нужно захватить вывод в переменную, вы можете обойти это с помощью буферизации вывода :

<?php
ob_start();
get_search_form();
$my_search_form = ob_get_clean();
?>
1 голос
/ 26 февраля 2012

Я исправил это, убрав get_search_form () из эха и напечатав его в своем собственном блоке php.

У меня есть ощущение (без полного понимания), что тот факт, что я повторял утверждение, которое было отражено в первую очередь, вызвал это забавное поведение. Поместив его в свой собственный php-блок и не отображая его, а просто вызвав его, мы решили проблему:

<?php get_search_form(); ?>

Приветствовали бы какие-либо мысли, советы или указания относительно того, что произошло?

...