将搜索栏添加到wordpress中的导航菜单

时间:2015-08-05 03:17:12

标签: wordpress search nav

http://www.lundarienpress.com/(这是一个wordpress网站)

这是我的网站,我正在尝试将搜索栏添加到导航菜单并将其放在右侧。有任何想法吗 ?

我还没有办法做到这一点。我希望论坛中有人可以帮助我。

3 个答案:

答案 0 :(得分:9)

@rockmandew是对的 - 如果不将get_search_form()设置为false,则此代码不起作用。但即使在做出改变之后,这个功能也无法发挥作用。

我最初将搜索表单添加到我的导航菜单中,方法是将其添加到我的函数文件中:

ClassCastException

如果您有一个菜单或想要在所有菜单中添加搜索框,这是一个很好的解决方案。在我的情况下,我只想在我的主菜单中添加一个搜索框。为了实现这一目标,我选择了这个:

/**
 * Add search box to nav menu
 */
function wpgood_nav_search( $items, $args ) {
    $items .= '<li>' . get_search_form( false ) . '</li>';
    return $items;
}
add_filter( 'wp_nav_menu_items','wpgood_nav_search', 10, 2 );

值得注意的是,我的主导航被命名为“主要导航”。在我的函数文件中。这可能因主题而异,因此需要相应更改,即“主要”和“主要”。或者在初始解决方案中,&#39; header_menu&#39;。

答案 1 :(得分:4)

Function.php代码:

function add_last_nav_item($items, $args) {
  if ($args->menu == 'header_menu') {
        $homelink = get_search_form();
        $items = $items;
        $items .= '<li>'.$homelink.'</li>';
        return $items;
  }
  return $items;
}
add_filter( 'wp_nav_menu_items', 'add_last_nav_item', 10, 2 );

此处get_search_form()是获取搜索框的功能。

答案 2 :(得分:0)

两个答案都使我走上了正确的道路,但是args的价值似乎取决于Wordpress版本(我运行5.5),主题(我正在使用https://underscores.me/)或其他因素(不是这里的超级WP专家,才刚刚开始研究此类WP主题。

如果上述方法对您不起作用,那么有用的是转储args并相应地修改代码。

args对我的价值:

stdClass::__set_state(array( 'menu' => WP_Term::__set_state(array( 'term_id' => 7, 'name' => 'Menu 1', 'slug' => 'menu-1', 'term_group' => 0, 'term_taxonomy_id' => 7, 'taxonomy' => 'nav_menu', 'description' => '', 'parent' => 0, 'count' => 5, 'filter' => 'raw', )), 'container' => 'div', 'container_class' => '', 'container_id' => '', 'container_aria_label' => '', 'menu_class' => 'menu', 'menu_id' => 'primary-menu', 'echo' => true, 'fallback_cb' => 'wp_page_menu', 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', 'items_wrap' => '
%3$s
', 'item_spacing' => 'preserve', 'depth' => 0, 'walker' => '', 'theme_location' => 'menu-1', ))

所以我去检查taxonomy(也清理了一下代码):

function add_last_nav_item($items, $args) {
    // just to show you how to dump it out - remove that line afterwards ofcs
    var_export($args);

    // If this is the menu you are looking for, add search form
    if (isset($args->menu->taxonomy) && $args->menu->taxonomy === 'nav_menu') {
        $items .= '<li>' . get_search_form(false) . '</li>';
    }
    return $items;
}
add_filter( 'wp_nav_menu_items', 'add_last_nav_item', 10, 2);