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

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

HIT

29.06.2015

3930

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

Плагины расширяющие функционал поиска

Relevanssi — A Better Search (100 000) — улучшает и расширяет результаты поиска, более релевантные результаты. Сейчас называется Relevanssi — Лучший поиск.

FiboSearch — Ajax Search for WooCommerce (100 000+) — превосходный плагин. Выводит ajax результаты поиска по товарам. Также выводит и названия найденных категорий. Есть шорткод для вывода строки поиска.

В PRO-версии этого плагина (FiboSearch — AJAX Search for WooCommerce (Pro)) есть классная функция — неточный поиск. Когда, например, при поиске товара VytaFlex 20, указать в поиске VytaFlex-20, он его найдет. При этом стандартный поиск WP нет.

Стандартная форма поиска 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>

Функция регулярности:

//Регулярное выражение (без вывода количества)
function plural_form_2($number, $after) {
	$cases = array (2, 0, 1, 1, 1, 2);
	echo $after[ ($number%100>4 && $number%100<20)? 2: $cases[min($number%10, 5)] ];
}
[site-socialshare]
  • Похожие записи
  • Комментарии
  • Вложения
Кнопка всплывающего поиска (+ курсор в поиске)

Кнопка всплывающего поиска (+ курсор в поиске)

Реализуем скрытый поиск, т.е. форма поиска изначально не показана и вызывается нажатие кнопки. Форму поиска и подложку вставляем в шапку (например, после открытия div main) Делаем кнопку или пункт меню Читать далее »

Upgrade WC

Upgrade WC

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

/
Фильтр по меткам (изменение основного запроса)

Фильтр по меткам (изменение основного запроса)

Реализуем фильтрацию записей по меткам путем изменения основного запроса на лету (ajax). Находим все теги записей входящих в категорию Данный код можно вставить в боковую колонку в виде виджета. <?php Читать далее »

/ /

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

Notice: Функция WP_Styles::add вызвана неправильно. Стиль с дескриптором "editor-buttons" был поставлен в очередь с незарегистрированными зависимостями: dashicons. Дополнительную информацию можно найти на странице «Отладка в WordPress». (Это сообщение было добавлено в версии 6.9.1.) in /home/t/tiberi6w/opttour.ru/public_html/wp-includes/functions.php on line 6170

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

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