Полное руководство по фильтрации сообщений и страниц WordPress
Опубликовано: 2017-07-13Если вы когда-либо совершали покупки на Amazon, вероятно, вы уже оценили силу фильтров, которые позволяют детализировать большой объем контента и точно определить, что вам нужно. При поиске продукта на Amazon всегда есть боковая панель, полная фильтров, которые помогут вам уточнить поиск, возвращая только те результаты, которые соответствуют вашим наиболее важным требованиям. Фильтры, такие как рейтинг покупателей, бренд, продукт для мужчин или женщин, состояние (новый / подержанный) и многое другое.
Учитывая, насколько полезны фильтры контента, вероятно, неудивительно, что возможность создавать их для вашего контента WordPress встроена прямо в ядро WordPress. А с небольшим ноу-хау вы можете передать эту силу посетителям вашего сайта, позволяя им перемещаться по вашему контенту более проворно, чем когда-либо прежде.
В этом посте мы проведем вас через процесс создания параметров фильтрации контента для ваших пользователей с помощью плагина.
Давайте начнем!
Почему WordPress пост и фильтрация страниц?
WordPress невероятно гибок. Ядро позволяет вам полностью контролировать все на вашем сайте. Фильтрация сообщений и страниц - одна из самых мощных функций WordPress. Есть несколько встроенных функций для сообщений, страниц и настраиваемого контента. Кроме того, существует множество способов выбора, группировки и фильтрации элементов, хранящихся в базе данных. Вы можете создавать сортируемые списки результатов поиска по шаблону страницы, типам сообщений, терминам таксономии, иерархии шаблонов, страницам продуктов или чему-либо еще.
По умолчанию WordPress имеет встроенную функцию поиска. Однако эта функция поиска оставляет желать лучшего и не помогает, когда ваши читатели хотят фильтровать результаты определенным образом. Вот тут-то и пригодится сторонний плагин.
Что делает плагин поиска и фильтрации?
Плагин Search & Filter - это простой в использовании плагин, который выводит стандартное окно поиска WordPress на новый уровень. Он позволяет вашим посетителям искать определенный термин и фильтровать результаты на основе категорий, тегов, настраиваемых типов сообщений, настраиваемых таксономий, диапазона дат или даже их комбинации для более точного поиска и более точных результатов.
Использовать плагин очень просто. После установки и активации плагина вы попадете на страницу настроек с подробным объяснением того, как его использовать. Короче говоря, вы можете использовать шорткод в любом месте ваших сообщений, страниц или любых боковых панелей с виджетами. В качестве альтернативы, если вы чувствуете себя смелым и не против запачкать руки небольшим кодом, вы можете вставить одну строку кода в файл темы.
Давайте посмотрим на несколько примеров.
Как фильтровать сообщения с помощью поиска и фильтрации
Самое основное использование плагина - это шорткод, который позволяет посетителям выполнять поиск по всем вашим категориям и тегам. Шорткод по умолчанию выглядит так:
[searchandfilter fields="search,category,post_tag"]
Вы можете вставить его в любую публикацию, страницу или текстовый виджет, и он отобразит параметры фильтрации с полями поиска, категорий и тегов на передней панели:

Если вы хотите, чтобы посетители могли выбирать более одной категории или тега, вы можете легко сделать это, изменив шорткод, включив флажки вместо раскрывающегося списка и пометив каждое поле:
[searchandfilter headings="Select categories:" types="checkbox" fields="category"]

В приведенных выше примерах показано, как использовать плагин на боковой панели. Однако вы также можете использовать его в файле темы, чтобы отобразить его на любой странице. В приведенном ниже примере форма отображается на странице блога. Все, что вам нужно сделать, это вставить следующую строку кода:
<?php echo do_shortcode('[searchandfilter fields="search,category,post_tag"]'); ?>В нашем случае мы добавили его в основной шаблон индекса темы Twenty Seventeen.

Как отфильтровать пользовательские таксономии?
Приведенные выше примеры показывают очень простое использование плагина. Но плагин Search & Filter принимает и другие параметры. Вы можете использовать шорткод, который позволяет вашим посетителям фильтровать результаты поиска только для пользовательских таксономий.
Допустим, у вас на сайте есть магазин с WooCommerce. Если вы хотите включить категории продуктов в результаты поиска, все, что вам нужно сделать, это добавить следующий шорткод:
[searchandfilter taxonomies="search,category,post_tag,product_cat" headings=",Categories,Tags,Product Categories"]
В этом примере я также добавил заголовки перед каждым полем, чтобы посетителям было легче различать поля:

Если вы хотите отобразить это на странице своей темы, все, что вам нужно сделать, это вставить следующую строку кода в соответствующий шаблон страницы в разделе Внешний вид> Темы> Редактор :
<?php echo do_shortcode('[searchandfilter taxonomies="search,category,post_tag,product_cat" headings=",Categories,Tags,Product Categories"]'); ?>Как фильтровать сообщения по диапазону дат?
Другой вариант использования - это если вы хотите, чтобы посетители могли искать сообщения в определенной категории в определенном диапазоне дат. В этом случае просто вставьте следующую строку кода в свой archive.php :
<?php echo do_shortcode('[searchandfilter fields="search,post_date" types=",daterange" headings=",Post Date"]'); ?>
Как фильтровать форматы сообщений и страницы?
В последнем примере давайте посмотрим на фильтрацию форматов сообщений и страниц. Если вы публикуете видео или аудио сообщения, этот шорткод позволит посетителям находить только сообщения, принадлежащие указанному вами формату сообщений:
[searchandfilter fields="search,post_format" types=",select" headings=",Post Format" submit_label="Filter"]
Если вы хотите, чтобы посетители фильтровали страницы или сообщения, все, что вам нужно, это шорткод, который принимает типы сообщений в качестве параметров:

[searchandfilter fields="search,post_types" post_types="post,page" headings=",Post Types"]

Помимо приведенных выше примеров, плагин позволяет вам получить еще более конкретную информацию, включая параметры для упорядочивания результатов в иерархическом порядке, для отображения количества сообщений в указанных категориях, добавления классов, фильтрации авторов и многого другого.
Как фильтровать сообщения вручную
Как и во всем, что связано с WordPress, есть способ сделать это без использования плагина. Допустим, вы хотите создать простую форму, которая позволяет посетителям фильтровать сообщения из определенной категории.
Для начала вам нужно создать простую форму:
<form action="<?php echo site_url() ?>/wp-admin/admin-ajax.php" method="POST" id="filter">
<?php
if( $terms = get_terms( 'category', 'orderby=name' ) ) :
echo '<select name="categoryfilter"><option>Select category...</option>';
foreach ( $terms as $term ) :
echo '<option value="' . $term->term_id . '">' . $term->name . '</option>';
endforeach;
echo '</select>';
endif;
?>
<label>
<input type="radio" name="date" value="ASC" /> Date: Ascending
</label>
<label>
<input type="radio" name="date" value="DESC" selected="selected" /> Date: Descending
</label>
<button>Apply filters</button>
<input type="hidden" name="action" value="customfilter">
</form>
<div id="response"></div>
В приведенной выше форме первая часть просто позволяет пользователю выбирать таксономии с помощью функции get_terms . Вы можете использовать это для категорий и тегов по умолчанию, а также для пользовательских таксономий. Следующая часть добавляет переключатели, которые позволяют посетителям отображать результаты в возрастающем или убывающем порядке. Наконец, последняя часть - это кнопка формы, которая позволяет им применять выбранные фильтры.
Вся форма была добавлена в шаблон sidebar.php в Внешний вид> Темы> Редактор .
Следующим шагом будет использование jQuery, чтобы результаты можно было отображать без перезагрузки страницы:
jQuery(function($){
$('#filter').submit(function(){
var filter = $('#filter');
$.ajax({
url:filter.attr('action'),
data:filter.serialize(), // form data
type:filter.attr('method'), // POST
beforeSend:function(xhr){
filter.find('button').text('Applying Filters...'); },
success:function(data){
filter.find('button').text('Apply filters'); $('#response').html(data);
}
});
return false;
});
});
Последний фрагмент кода - добавить функцию в файл function.php, которая будет обрабатывать результат на основе выбранных фильтров. Он будет просматривать выбранную категорию, и пока есть сообщения, он будет отображать их по дате публикации в порядке возрастания или убывания. Если в категории не найдено ни одного сообщения, отобразится сообщение, что сообщения не найдены:
function my_filters(){
$args = array(
'orderby' => 'date',
'order' => $_POST['date']
);
if( isset( $_POST['categoryfilter'] ) )
$args['tax_query'] = array(
array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $_POST['categoryfilter']
)
);
$query = new WP_Query( $args );
if( $query->have_posts() ) :
while( $query->have_posts() ): $query->the_post();
echo '<h2>' . $query->post->post_title . '</h2>';
endwhile;
wp_reset_postdata();
else :
echo 'No posts found';
endif;
die();
}
add_action('wp_ajax_customfilter', 'my_filters');
add_action('wp_ajax_nopriv_customfilter', 'my_filters');
Конечный результат выглядит так: интерфейс:

Почему вы должны позволять читателям фильтровать сообщения и страницы в WordPress
Вышеупомянутые методы - отличный способ позволить пользователям фильтровать ваши сообщения. Но зачем вам это делать?
WordPress уже позволяет вам организовывать ваши сообщения по категориям и тегам, но он позволяет пользователям просматривать только одну категорию или тег за раз. Более того, если вы используете настраиваемые типы сообщений, которые используют свои собственные категории, эти категории не будут отображаться вместе с теми, которые используются для обычных сообщений.
Плагин Search & Filter особенно полезен не только тогда, когда у вас есть много разных категорий и тегов в сочетании с годовым контентом, он также пригодится, если вы добавили пользовательские типы сообщений, такие как портфолио, галерея, отзывы и т. Д.
Другой пример: ваши посетители могут легко использовать этот плагин, чтобы фильтровать ваши продукты и находить то, что они ищут. И если вы знакомы с кодом, выполнение этого вручную позволяет вам иметь еще больший контроль над тем, как отображаются результаты поиска и какие параметры используются.
Заключение
Убедитесь, что ваш веб-сайт прост в использовании, позволяя вашим посетителям быстро находить нужный вам контент, - это отличный способ обеспечить им приятный пользовательский опыт и побудить их вернуться. Если ваш сайт богат контентом, подумайте о внедрении фильтрации страниц и сообщений, чтобы убедиться, что они получают контент, который они хотят видеть больше.
Мы хотели бы услышать ваш опыт работы с поиском и фильтрацией WordPress. Дайте нам знать в комментариях ниже.
Изображение миниатюры статьи от graphicglobe / shutterstock.com
