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

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

HIT

29.06.2015

1002

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

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>

Тэги: ,

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

  • Похожие записи
  • Комментарии
  • Вложения
Настройки сайта с theme customizer

Настройки сайта с theme customizer

Для того чтобы некоторые настройки сайта можно было менять из админки, через специальный интерфейс, а не ковырять исходный код (для заказчика), нужно использовать возможности WP Theme Customizer. Можно настраивать, например, Читать далее »

/
Категории в результатах поиска

Категории в результатах поиска

Выведем в результатах поискового запроса категории. Категории будут выведены перед найденными записями. Категории в результатах поиска Вставляем в шаблон вывода результатов поиска (search.php), перед началом цикла if(have_posts()) : <?php $search_term Читать далее »

Поиск по категориям

Поиск по категориям

Стандартный поиск WordPress ищет по всему сайту. Добавим в поисковую форму выбор категории сужающий сектор поиска. Поиск по категориям WordPress Для поиска по категория WP в строку запроса необходимо добавить Читать далее »

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

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

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