Input type search in Menu

时间:2017-03-02 作者:Friedrich Siever

嗨,作为一个noob,我想实现以下目标。我想在注册菜单中加入搜索输入字段。因此我读了一本WP初学者的书。com教程,它基本上遵循一个带有过滤器挂钩的aproach。

add_filter(\'wp_nav_menu_items\',\'add_search_box_to_menu\', 10, 2);
function add_search_box_to_menu( $items, $args ) {
    if( $args->theme_location == \'primary\' ){
        return $items."<li class=\'menu-header-search\'><form action=\'http://example.com/\' id=\'searchform\' method=\'get\'><input type=\'text\' name=\'s\' id=\'s\' placeholder=\'Search\'></form></li>";
        }
    return $items;
}
因此,这似乎成为我生命中的第一个过滤器挂钩。为了获得类似于“搜索小部件”输出的html输出,我采用了这个解决方案,在初学者看来,这似乎是一个糟糕编码的例子。

function add_search_box_to_menu($items, $args) {
        if ($args->theme_location == \'menu-1\') {
            return $items . "<li class=\'search-field\'>"
                    . "<form action=\'"
                    . esc_url(home_url())
                    . "\' id=\'searchform\'"
                    . " method=\'get\'"
                    . "role =\'search\'>"
                    . "<label>"
                    . "<span class=\'screen-reader-text\'>" 
                    . esc_html__(\'Search for:\', \'bloook\')
                    . "</span>"
                    . "<input type=\'search\' name=\'s\' id=\'s\' "
                    . "placeholder=\'" 
                    . esc_html__(\'Search\', \'bloook\') 
                    . "\'>" 
                    . "</label>"
                    . "<input class=\'search-submit\' value =\'"
                    . esc_html__(\'Search\', \'bloook\')
                    . "\' type=\'submit\'>"
                    . "</form></li>";
        }
        return $items;
    }
    add_filter(\'wp_nav_menu_items\', \'add_search_box_to_menu\', 10, 2);
虽然它似乎在起作用。以下是我的问题:

作为一个(PHP、WP和英语)noob,我想知道是否有一种更易于维护或更清晰的方式来实现我的目标?

或难道我只是对自己的低水平php技能感到恼火吗?或者它看起来像你的普通代码?

哪里是这样的过滤器挂钩的好地方(实际上它直接放在my functions.php的导航注册下)?

非常感谢

1 个回复
最合适的回答,由SO网友:WPExplorer 整理而成

这很好,但是如果您想让事情看起来“更干净”并且更容易修改,您可以创建一个新的文件菜单搜索。php并在那里添加HTML,然后稍微调整一下函数(别忘了给函数加前缀)

function myprefix_add_search_box_to_menu($items, $args) {
if ( $args->theme_location == \'menu-1\' ) {
    ob_start();
    get_template_part( \'menu-search\' );
    $items .= ob_get_clean();
}
return $items;
}add\\u filter(\'wp\\u nav\\u menu items\',\'myprefix\\u add\\u search\\u box\\u to\\u menu\',10,2);

相关推荐

如何将Java脚本添加到Custom-Page.php模板?

如何将javascript添加到自定义页面。php模板?如何使从w3schools ajax教程获得的以下javascript在自定义页面上工作。php模板?任何帮助都将不胜感激。工作javascript包含在以下HTML中:<!DOCTYPE html> <html> <style> table,th,td { border : 1px solid black; border-collapse: collapse;&#x