/ Сайтостроение / Wordpress / Поиск по сайту

Поиск по сайту

29.06.2015

820

Поиск по сайту — важнейший инструмент позволяющий находить на сайте любую информацию.

Relevanssi

Relevanssi — A Better Search — плагин расширяющий функционал поиска

Стандартная форма поиска wordpress

<div id="sea">

<form method="get" id="searchform" class="searchform" action="<?php echo esc_url( home_url( '/' ) ); ?>" role="search">
 <button type="submit" id="pic-sea" value=""><i class="fa fa-search"></i></button>
 <input type="text" name="s" class="" id="s" placeholder="Поиск" />
</form>

</div>

CSS Формы поиска

#sea {
top: 50%;
left: 50%;
position: fixed;
z-index: 9999;
opacity: 0;
width: 100px;
transition: opacity .5s ease;
}

.sea-2 {opacity: 1 !important;}

#searchform {padding:0; background:none;}

#s {
padding: 10px;
transition: width .3s ease-in-out;
border: none;
box-sizing: border-box;
position: absolute;
right: 0;
z-index: 98;
}

#pic-sea {
padding: 10px;
border: none;
position: absolute;
right: 0;
background-color: rgb(224, 22, 52);
transition: background-color .3s ease;
color: #fff;
z-index: 99;

}
#pic-sea .fa {color: #fff !important;}

#pic-sea:hover {background-color: rgb(153, 8, 21);}

#searchform .fa {padding: 0 !important;}

Форма поиска по товарам woocommerce

<div id="sea">

<form id="searchform" class="woocommerce-product-search" action="<?php echo esc_url( home_url( '/' ) ); ?> " method="get" role="search">
<button id="pic-sea" type="submit" value=""><i class="fa fa-search"></i></button> 
<input id="s" name="s" type="text" placeholder="Поиск" />
<input name="post_type" type="hidden" value="product" />
</form>

</div>

Исключение из поиска

Исключить из поиска вывод странниц (page) — надо добавить код в functions

function searchExcludePages($query) {
	if ($query->is_search) {
		$query->set('post_type', 'post');
	}
 
	return $query;
}
 
add_filter('pre_get_posts','searchExcludePages');

Можно исключить определенные категории из поиска (добавив в код выше)
для одной категории

$query->set('category__not_in','5');

для нескольких категорий

$query->set('category__not_in',array(74,75,5));

Измененные правила выборки поиска будут также относится и к админке, чтобы этого избежать нужно обернуть содержимое функции условием if( !is_admin() )

function searchExcludePages($query) {
  
  if( !is_admin() ) {  
  
	if ($query->is_search) {
	    $query->set('category__not_in',array(75,5,74,182,172,188));
	    $query->set('post_type', 'post');
	}
	return $query;
  } 
}
 
add_filter('pre_get_posts','searchExcludePages');

Чтобы не выводить в поиске пользовательские типы записей, необходимо в функции назначения типа записи добавить параметр ‘exclude_from_search’ => true

Единственный результат поиска

Перенаправляем пользователя на запись, если найден единственный результат поиска (в поиске woocommerce реализовано по-умолчанию), в файл functions.php

// Перенаправление на запись, если в поиске единственный результат

add_action('template_redirect', 'redirect_single_post');
function redirect_single_post() {
if (is_search()) {
global $wp_query;
if ($wp_query->post_count == 1) {
wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
}
}
}

Кнопка развертывания поиска при наведении (CSS выше)

/* Кнопка развертывания поиска */
$('#sea').hover(function() {
$('#s').toggleClass('s2');
});

Обязательное поле

Можно сделать поле формы поиска обязательным для заполнения (хотя бы один символ). Данный атрибут поддерживается в современных версиях браузеров, поддерживающих HTML5.

<input required type="text" name="s" class="" id="s2" placeholder="Поиск по сайту.." />

Вывод количества результатов поиска

Для того чтобы грамотно выводить результаты поиска, необходимо использование регулярных выражений для слова «результат»:

<p id="count-search"><?php
if ($wp_query->found_posts == 0) {
echo 'Нет записей удовлетворяющих запросу';
} else {
plural_form_2( $wp_query->found_posts, array('Найдена ','Найдены ','Найдено ') );
echo $wp_query->found_posts;
plural_form_2( $wp_query->found_posts, array(' запись',' записи',' записей') );
}
?></p>

Тэги: ,

Поделится информацией с друзьями

  • Похожие записи
  • Комментарии
  • Вложения
Переменный стиль

Переменный стиль

Если нужно сделать для четных и нечетных элементов разные классы. Поместить в funсtions.php function cycle(&$arr) { $arr[] = array_shift($arr); return end($arr); } $oddEven = array('even', 'odd'); В блоке изменяемого стиля Читать далее »

Upgrade WC

Upgrade WC

Очередная серия улучшений (upgrade) плагина WC. Буду добавлять по мере изучения новые решения. Поиск по SKU (артикулу) Из коробки WC не ищет по артикулам (SKU). Но достаточно установить плагин Search Читать далее »

/
Варианты при вводе запроса в поиск

Варианты при вводе запроса в поиск

При вводе поискового запроса удобно чтобы сразу выводились несколько вариантов с ссылками на страницы с искомым словосочетанием. Реализуем это минимальными действиями. Подлючение скрипта и стилей Подключаем все необходимые стили и Читать далее »

/

Добавить комментарий

Пока нет комментариев. Будь первым!

Поиск по сайту
Простой слайдер jquery
Рекомендации для васПростой слайдер jqueryOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.