Wordpress get_search_form()不';似乎没有将参数考虑在内

Wordpress get_search_form()不';似乎没有将参数考虑在内,wordpress,search,menu,menuitem,Wordpress,Search,Menu,Menuitem,我正在手动创建菜单并尝试包含搜索表单 这是从Wordpress文档“构建简单菜单列表”中获取的 在完成菜单和添加搜索表单之前,我添加了一个额外的元素 // 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

我正在手动创建菜单并尝试包含搜索表单

这是从Wordpress文档“构建简单菜单列表”中获取的

在完成菜单和添加搜索表单之前,我添加了一个额外的
  • 元素

                // 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;
    
    //根据$menu\u名称获取导航菜单(与wp\u导航菜单的“主题位置”或“菜单”参数相同)
    //此代码基于wp_nav_menu的代码,从menu slug获取菜单ID
    $menu_name='主菜单';
    if($locations=get_nav_menu_locations())和&isset($locations[$menu_name])){
    $menu=wp_get_nav_menu_object($locations[$menu_name]);
    $menu\u items=wp\u get\u nav\u menu\u menu\u items($menu->term\u id);
    $menu_list='
      ”; foreach((数组)$菜单项作为$key=>$菜单项){ $title=$菜单项->标题; $url=$menu\u项->url; $menu_list.='
    • '; } $menu_list.='
    • '。获取搜索表单(false)。'
    • ; $menu_list.='
    '; }否则{ $menu_list='
    • 无菜单
    '; } echo$菜单列表;
    问题出在输出上

    
    


    有人能告诉我为什么即使我指定echo=false,搜索仍在菜单之前打印吗?

    我通过从echo中取出get\u search\u form()并在其自己的php块中打印来解决这个问题

    我有一种感觉(没有完全理解),我是在附和一个最初被附和的声明,这一事实导致了这种有趣的行为。将它放在自己的php块中,不回显,而是直接调用它,解决了这个问题:

    <?php get_search_form(); ?>
    
    
    

    欢迎对发生的事情有任何想法、建议或指导?

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

    我有一种感觉(没有完全理解),我是在附和一个最初被附和的声明,这一事实导致了这种有趣的行为。将它放在自己的php块中,不回显,而是直接调用它,解决了这个问题:

    <?php get_search_form(); ?>
    
    
    

    欢迎您对所发生的事情提出任何想法、建议或指导?

    如果您的主题有searchform.php,您可能会点击:

    如果您只是回显搜索表单,那么您的解决方法很好,但是如果您需要在变量中捕获输出,您可以使用以下方法解决此问题:


    如果你的主题有一个searchform.php,你可能会点击:

    如果您只是回显搜索表单,那么您的解决方法很好,但是如果您需要在变量中捕获输出,您可以使用以下方法解决此问题:

    
    
    <?php
    ob_start();
    get_search_form();
    $my_search_form = ob_get_clean();
    ?>