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

[РЕШЕНО] Результаты поиска в нужном месте

Есть ли возможность вывести результаты поиска в нужном шаблоне страницы?

есть отдельная кастомная страница для пользователя "fav.php" хочу именно в ней вставить форму вводыа и вывесте результаты поиска.

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

спасибо Sasha Lifestar


полный текст статьи

Так как мне не нужно оформление - взял только нужный код.
Первый нюанс - нельзя работать через URL и переменную "s" ... ?s=поисковая фраза ... - вас перекинет на страницу поиска, а это мне не нужно. Чтоб избавится от оригинальной страницы, нужно придумать свою переменную и написать под неё свою форму поиска - сильно думать не стал и переменную взял "ss"

Второй нюанс - есть конфликт с поисковыми плагинами, у меня Relevanssi и с ним нужно будет состыковывать код, без плагина все работает.

вот весь код

<form role="search" method="get" id="searchform" action="" >
	<label class="screen-reader-text" for="ss">Поиск: </label>
	<input type="text" value="<?php echo get_search_query() ?>" name="ss" id="ss" />
	<input type="submit" id="searchsubmit" value="найти" />
</form>

<?php
	echo $search_get = $_POST["ss"];
	$args = array(
					's' =>$search_get
				);
		// The Query
	$the_query = new WP_Query( $args );
	if ( $the_query->have_posts() ) {
			_e("<h2 style='font-weight:bold;color:#000'>Search Results for: ". $search_get ."</h2>");
			while ( $the_query->have_posts() ) {
			   $the_query->the_post();
					 ?>
						<li>
							<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
						</li>
					 <?php
			}
		}else{
	?>
			<h2 style='font-weight:bold;color:#000'>Nothing Found</h2>
			<div class="alert alert-info">
			  <p>Sorry, but nothing matched your search criteria. Please try again with some different keywords.</p>
			</div>
<?php } ?>
1
kolshix
453
4 месяца назад
  • 0
    Glomberg139 cайт: viktor-web.ru

    Здравствуйте.
    Вставить форму поиска вы можете без труда в любое место на сайте - get_search_form()
    А вот результаты... По умолчанию, форма должна отправить GET запрос на главную страницу с параметром s.
    Если вы хотите отображать результаты запроса на той же странице, придется организовать ajax запрос с поисковым параметром и обработать ответ.
    Надеюсь натолкнул на нужное направление.

    kolshix 4 месяца назад

    про форму знаю без проблем - туда ещё и условия воткнуть можно

    про вывод ajax тоже знаю - часто встречаю на разных вики сайтах - тоже про это думал, а вот про реализацию малыми силами НИЧЕГО НЕ ЗНАЮ

    и даже если реализую через АЯКС - как всегда появятся бонусы ввиде ПАГИНАЦИИ и КВЕРИ фильтрации

    kolshix 4 месяца назад

    пока вижу решение по проще - НО ХОТЕЛОСЬ ОТДЕЛЬНУЮ СТРАНИЦУ - Буду в странице поиска делать разветвление на 2 стиля и в зависимости от GET условия покажу нужный стиль поиска и результаты поиска - пока нет решения с АЯКС или другого , буду обходится тем что умею

    Glomberg 4 месяца назад

    Ajax - это не сложно. Если вкратце, то:

      • объявляем переменную, в которой содержится путь до wp-ajax.php
      • пишем обработчик формы на JS, отменяем стандартное поведение формы
      • пишем функцию на php, которую привязываем на хук соответствующего ajax запроса, делаем WP_Query
      • возвращаем результат в функцию из п.2, которая, в свою очередь, показывает результат на экране.
    kolshix 4 месяца назад

    я так и предполагал - малыми силами тут не обойтись - вопрос не горит, буду в будущем реализовывать.

    Нужны знания (опыт) wp-ajax.php + язык JS + знание хуков (эт наверно самое простое), я обычно копипастом делаю + дорабатываю PHP - это пока не осилю, но и на этом Спасибо !

    Sasha Lifestar 4 месяца назад

    kolshix, на твоём месте я бы делал запрос не на wp-ajax.php, а использовал стандартный REST API, тогда вообще пункт 3 не нужно реализовывать

    Sasha Lifestar 4 месяца назад

    Но ещё проще сделать чтобы обработчиком формы была та страница, с которой отправляется запрос и https://stackoverflow.com/a/30076012/2290080

    kolshix 4 месяца назад

    еще не пробовал - но смотря инфу по ссылке предпологаю что сработает стандартный редирект на страницу поиска при обнаружении

    сайт/страница/?=поиск

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация