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

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

HIT

23.12.2016

1256

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

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

Вставляем в шаблон вывода результатов поиска (search.php), перед началом цикла if(have_posts()) :

<?php $search_term = explode( ' ', get_search_query( false ) );
global $wpdb;
$select = "
SELECT DISTINCT t.*, tt.*
FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt
ON t.term_id = tt.term_id
WHERE tt.taxonomy IN ('category')";
$first = true;
foreach ( $search_term as $s ){
if ( $first ){
$select .= " AND (t.name LIKE '%s')";
$string_replace[] = '%'.$wpdb->esc_like( $s ).'%';
$first = false;
}else{
$select .= " OR (t.name LIKE '%s')";
$string_replace[] = '%'. $wpdb->esc_like( $s ).'%';
}
}
$select .= " ORDER BY t.name ASC";
$terms = $wpdb->get_results( $wpdb->prepare( $select, $string_replace ) );
if ( count($terms) > 0 ){
echo '<ul>';
foreach ( $terms as $term ) {
echo '<li><a href="'.esc_url( get_term_link( $term ) ).'" title="'.esc_attr( $term->name ).'">' . esc_html( $term->name ) . '</a></li>';
}
echo '</ul>';
} ?>

В данном случае категории будут выводится в виде списка.

esc_url — очищает УРЛ для использования его в тексте, изменяет неправильные и удаляет опасные символы.

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

Чтобы не было лишних терминов, при пустом запросе можно внутри конструкции foreach задать проверку каждого термина if ($term->taxonomy == ‘category’) :

Настройка вида категорий

Сделаем вывод категорий в развернутом виде (миниатюра, описание и т.д.). Модифицируем код вывода:

if ( count($terms) > 0 ) : ?>

<h2>Найденные категории</h2>
<div id="podcat">

<?php foreach ( $terms as $term ) : ?>


<div class="block-podcategory">

<a href="<?php echo get_term_link( $term ); ?>" title="<?php echo $term->name; ?>">
<?php
$category = get_category( $term->term_id ); //Расширяем массив до параметров категории
if ( $category->term_image ) { echo wp_get_attachment_image( $category->term_image, 'square' ); }
else {echo '<div class="cat-image"><img src="'.get_template_directory_uri().'/images/img-default-square.jpg" /></div>';}
?>
</a>

<h2 class="title-2"><a href="<?php echo get_term_link( $term ); ?>" title="<?php echo $term->name; ?>"><?php echo $term->name; ?></a></h2>

<p class="count"><?php echo get_category($term)->category_count; ?></p>

<div class="descript-2"><p><?php if($term->description): ?><?php echo $term->description; ?><?php else: ?>Описание рублики<?php endif; ?></p></div>

</div>
<?php endforeach; ?>

</div>

<?php endif; ?>

$category = get_category( $term->term_id ); — вызываем для того чтобы расширить массив, и подгружать миниатюру категории.

Тэги:

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

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

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

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

/
Upgrade WC

Upgrade WC

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

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

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

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

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

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

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