WordPress как на ладони
Мощный и не дорогой хостинг от Fornex.com Хостинг, VPS/VDS и отдельные сервера только на SSD дисках. 7 дней бесплатного тестирования.

the_search_query() WP 2.1.0

Выводит текущий поисковой запрос. Используется на странице вывода результатов поиска (search.php).

the_search_query() можно безопасно использовать внутри атрибутов html тегов (см. примеры).

Работает на основе: get_search_query()
✈ 1 раз = 0.000017с = очень быстро | 50000 раз = 0.04с = скорость света PHP 7.1.2, WP 4.7.3

Хуков нет.

Использование

<?php the_search_query(); ?>

Примеры

#1. Выведем поисковой запрос в поле ввода запроса

После того как запрос был отправлен бывает удобно оставить этот запрос в поле куда он вводился (в поле поиска), сделать это можно так:

<input type="text" value="<?php the_search_query(); ?>" name="s" id="s" />

#2. Выведем поисковой запрос на странице:

<p>Результаты поиска по запросу: " <?php the_search_query() ?> ".</p>

Код the_search_query: wp-includes/general-template.php VER 5.0.1

<?php
function the_search_query() {
	/**
	 * Filters the contents of the search query variable for display.
	 *
	 * @since 2.3.0
	 *
	 * @param mixed $search Contents of the search query variable.
	 */
	echo esc_attr( apply_filters( 'the_search_query', get_search_query( false ) ) );
}

Cвязанные функции

Из раздела: Другие функции темы

Еще из тегов шаблона: Записи: посты, страницы, ...

10 комментов
  • Фёдор cайт: mongvo.com.ua

    Уважаемый автор, возможно немного не в тему, но никак не могу побороть ошибку... После того как в форме поиска набрать любой запрос, "плывет" верстка! WordPress как положено переадресовывает на страницу search.php но отображается все коряво и шаблон уезжает куда то в правую сторону... Уже весь интернет облазил, видимо ошибка довольно таки редкая. Может подскажите чего.
    P.S. Вот форма поиска

    <form method="get" name="searchform" id="searchform" action="<?php bloginfo('url'); ?>" onSubmit="if(searchform.s.value == '') return false;">
    	<input type="text" name="s" id="s" class="search animate" placeholder="Введите название растения..." value="<?= wp_specialchars($s, 1); ?>" />
    </form>

    Буду очень благодарен за помощь!

    1
    Ответить4 года назад #
    • Kama7099

      На странице результатов поиска плывет? Если да, то в теме есть файл search.php в нем html код корявый, где-то может тег не закрывается... сравните структуру с файлом темы где нормально отображается.

      1
      Ответить4 года назад #
      • Фёдор cайт: mongvo.com.ua

        Спасибо, разобрался smile Вот это вот все ломало:

        <body <?php body_class(); ?>>

        Заменил на это:

        <body>

        и все встало на свои места smile

        Ответить4 года назад #
  • @ Дамир

    А какую тз этих функции
    get_search_query()
    the_search_query()

    правильней использовать, в коде формы поисковой строки
    input type="text" value="" name="s" id="s"

    И как они защищают от XSS атак? Т.е. без этих функций WP будет под угрозой?

    1
    Ответить3.4 года назад #
    • Kama7099

      Можно использовать любую функцию, но удобнее

      <?php the_search_query() ?>

      Они отличаются: get_search_query() - возвращает результат, а the_search_query() - выводит сразу на экран.

      Да, они зачищают от XSS атак, тем что перед выводом результата прогоняют его через функцию esc_attr(). Можно не использовать эти функции, а вручную прогнать через esc_attr().

      Ответить3.4 года назад #
  • @ ivan

    а можно ли сделать, чтобы в теме на определенных страницах с поиском результаты выводились как через search.php так и через другой шаблон. например если осуществлять поиск с главной страницы то результаты выходят через search.php а если с какой-нибудь другой, то уже другой шаблон вывода результатов был... ?

    1
    Ответить2.9 года назад #
    • Сергей

      Поддерживаю!!!
      Очень даже актуальный вопрос, в сети так и не смог найти адекватный ответ.

      Думаю многие проекты требуют разных шаблонов вывода результатов поиска.

      Может подскажете?

      Ответить2.5 года назад #
    • Kama7099

      Определяйте откуда пришел запрос через $_SERVER['HTTP_REFERER'] и на основе результата изменяйте основной запрос с помощью pre_get_posts

      Ответить2.5 года назад #
      • Сергей

        Вот рабочий вариант, может кому пригодится!

        function template_chooser( $template ){    
        	$post_type = get_query_var('post_type');
        
        	if( is_search() && $post_type == 'Название-типа-записи' ){
        		return locate_template('название-шаблона.php');
        	}
        
        	return $template;   
        }
        add_filter('template_include', 'template_chooser');
        Ответить2.5 года назад #
        • Kama7099

          Тут надо пояснить, чтобы не путались, что - это разный вывод результатов поиска для разных типов записей: для каждого создается свой файл-шаблон вывода, наподобие search.php.

          Но это не совсем то, что спрашивал ivan...

          Спасибо за комментарий!

          Ответить2.5 года назад #
Здравствуйте, !     Войти . Зарегистрироваться