Как добавить поле поиска в навигационное меню?

16 окт. 2015 г., 00:52:17
Просмотры: 15.6K
Голосов: 6

Я хочу добавить поле поиска в навигационное меню, добавив следующий код в functions.php (в конце файла, но перед ?>).

add_filter( 'wp_nav_menu_items','add_search_box', 10, 2 );
function add_search_box( $items, $args ) {
    $items .= '<li>' . get_search_form( false ) . '</li>';
    return $items;
}

Однако поле поиска не появляется.


РЕДАКТИРОВАНИЕ: На самом деле, проблема не в указанном коде. При нажатии на иконку поиска (Примечание: я использую тему Radiate) появляются два поля поиска.

Я хочу разместить поле поиска внутри навигационного меню, чтобы не нужно было нажимать для его отображения:

Пример размещения поля поиска в меню

Примечание: вот содержимое файла searchform.php:

<form role="search" method="get" class="search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>">
    <label>
        <span class="screen-reader-text"><?php _ex( 'Search for:', 'label', 'radiate' ); ?></span>
        <input type="search" class="search-field" placeholder="<?php echo esc_attr_x( 'Search &hellip;', 'placeholder', 'radiate' ); ?>" value="<?php echo esc_attr( get_search_query() ); ?>" name="s">
    </label>
    <input type="submit" class="search-submit" value="<?php echo esc_attr_x( 'Search', 'submit button', 'radiate' ); ?>">
</form>
2
Комментарии

Вы можете использовать этот плагин https://wordpress.org/plugins/add-search-to-menu для реализации этой функции.

Vinod Dalvi Vinod Dalvi
11 апр. 2017 г. 10:40:44

@VinodDalvi, спасибо. Выглядит интересно.

SparkAndShine SparkAndShine
11 апр. 2017 г. 10:54:16
Все ответы на вопрос 1
5

Ваш код работает идеально в моём случае. Единственное, что приходит на ум — у вас может быть файл searchform.php в вашей теме, но он пустой? (Если searchform.php отсутствует в вашей теме, WordPress использует стандартную форму поиска.)

16 окт. 2015 г. 01:36:14
Комментарии

Спасибо. Да, с кодом выше проблем нет. Я обновил свой вопрос, пожалуйста, проверьте.

SparkAndShine SparkAndShine
16 окт. 2015 г. 03:01:04

Похоже, это проблема поведения темы - вы пробовали просмотреть файл searchform.php на наличие HTML-элементов и CSS-правил темы, применяемых к форме? Вероятно, вам придется отредактировать их напрямую.

Benjamin Love Benjamin Love
16 окт. 2015 г. 03:08:05

Еще раз спасибо. Я добавил код searchform.php в вопрос.

SparkAndShine SparkAndShine
16 окт. 2015 г. 14:25:00

Кажется, вы пытаетесь найти того, кто сделает работу за вас. Поле поиска отображается, так что ваш первоначальный вопрос решен. Теперь вы просто имеете дело с проблемами поведения css/javascript, которые очень мало связаны с WordPress. Если вы не знаете, с чего начать, вам стоит нанять разработчика для помощи.

Benjamin Love Benjamin Love
17 окт. 2015 г. 17:50:42

Спасибо за ваше любезное напоминание.

SparkAndShine SparkAndShine
17 окт. 2015 г. 18:48:51