Публикация в группе: Полезное для WordPress

Добавлено в закладки: 8

Учитывая как часто пользователи интересуются этой темой, я решил написать сей пост, который может помочь в решении многих задач, основная из них - создание фильтра для получения определенных записей или страниц.

Именно создание фильтра чего-либо является наверное наиболее востребованной задачей на сайте, будь то интернет-магазин или обычный блог о кулинарии. Предложить фильтр посетителю значит упростить его жизнь на вашем сайте, сделать его более понятным и дружелюбным.

Проблема в том, что нельзя создать какой то универсальный фильтр, который бы подошел для всех сайтов. Задачи у всех разные и содержимое фильтра на одном сайте будет отличаться от другого, поэтому создание фильтра для сайта - задача строго индивидуальная и полностью возлагается на вебмастера.

filtr-form

Можно воспользоваться услугами специалиста, объяснить, что вам от него надо и получить готовый результат. А если вам захочется внести изменения? Это затратный способ и не практичный. Гораздо приятнее, что то сделать самому, разобраться в этом вопросе и в последствии совершенствовать свои навыки, находя новые пути решения своей задачи)

Давайте для начала рассмотрим логику работы любого фильтра.

Фильтр работает в два этапа:

  1. Отсылает в обработчик параметры выбранные пользователем в форме фильтрации
  2. Обработчик принимает значения, обрабатывает их и выдает результат обработки в виде какой то информации.

т.е. по логике нам надо написать код формы фильтрации и обработчик, который будет принимать данные с этой формы.

Работая с сайтом на WordPress очень полезно знать о том, что мы можем отправить данные из фильтра напрямую системе WordPress, возложив на нее работу по обработке и выдаче результата запроса, без необходимости писать этот обработчик самому. Иными словами, нам можно написать только форму фильтра следуя определенным правилам, чтобы составить правильный запрос к БД WordPress и WordPress быстро выдаст нам результат. Почему бы в начале своего пути разработчика фильтра для своего сайта не пойти кратчайшим путем и не использовать эту возможность?

Допустим, что составлять html-формы мы уже умеем, тогда дело за малым - вникнуть в правила создания запроса к БД WordPress из этой формы.

Давайте для начала определимся с основными правилами.

  1. Метод передачи данным будет использоваться GET
  2. Переданные параметры разделяются знаком амперсант (&)

Следуя этим несложным правилам можно понять, что запрос мы должны строить по такому принципу

exаmple.ru/?первый_параметр=значение_параметра&второй_параметр=значение_параметра&....

и подобным образом мы можем строить запросы практически любой сложности и длины.

Что же нам надо передавать в качестве параметров и их значений? А вот это и есть самая суть этого поста, к которой мы сейчас и переходим.

Важно понимать, что запрос мы будем строить последовательно, словно кирпичики укладывая параметры со своими значениями в запрос и каждый последующий параметр будет уточнять весь запрос.

Например, нам надо получить все записи автора admin, за 2013 год и вывести только последние 20. Тогда структура запроса будет выглядеть так:

exаmple.ru/?автор=admin&год=2013&количество=20

это не рабочий пример, это структура запроса, логика его построения.

Если значения параметров запроса нам более-менее известны, то сами параметры которые нам надо передавать нет. Поэтому мы перейдем к рассмотрению этих параметров.

Параметры которые мы можем передавать в запрос мы можем разделить на группы:

Рассмотрим каждую группу этих параметров подробнее.

 

Параметры категорий

Данные параметры получают записи из определенных категорий

cat (число) - в качестве значения передаем ID категории, можем перечислять их через запятую
category_name (строка) - передаем ярлык нужной к выводу категории
Примеры

1. Получим записи из категории идентификатор которой равен 5

exаmple.ru/?cat=5

2. Получим записи из нескольких категорий

exаmple.ru/?cat=10,20

3. Получим все записи за исключением указанных категорий

exаmple.ru/?cat=-11,-25

4. Получим записи из категорий с указанным ярлыком

exаmple.ru/?category_name=order,slims

 

Параметры меток

Выводят записи содержащих указанные метки

tag (строка) - в качестве значения можно передавать ярлыки меток

tag_id (число) - в качестве значения указываются идентификаторы нужных меток

Примеры

1.  Получим записи содержащие указанную метку

exаmple.ru/?tag=book

exаmple.ru/?tag_id=15

2. Получить все посты содержащие хотя бы одну из указанных меток

exаmple.ru/?tag=book,clock

exаmple.ru/?tag_id=15,36,5

3. Получим все записи которые содержат все указанные метки

exаmple.ru/?tag=book+clock+days

 

Параметры авторов

Выводят посты указанных авторов

author (число) - в качестве параметра указывается идентификатор нужного автора

author_name (строка) - указывается логин нужного автора

 

Примеры

1. Получить все записи указанного автора

exаmple.ru/?author=56

exаmple.ru/?author_name=petya

2. Получить записи всех указанных авторов

exаmple.ru/?author=33,78,12

exаmple.ru/?author_name=petya,vasya

3. Вывести все записи кроме указанного автора

exаmple.ru/?author=-56

 

Параметры постов и страниц

p (число) - идентификатор поста, который желаем получить

name (строка) - ярлык нужного нам поста

page_id (число) - идентификатор страницы, которую желаем получить

pagename (строка) - ярлык нужной нам страницы

post_parent (число) - идентификатор родительской страницы дочерние страницы которой мы хотим получить.

 

Примеры

1. Получим указанную запись

exаmple.ru/?p=54

exаmple.ru/?name=title_post

2. Получим указанную страницу

exаmple.ru/?page_id=89

exаmple.ru/?pagename=slug_page

3. Выведем все страницы, являющиеся дочерними для указаной

exаmple.ru/?post_parent=69

4. Получим определенную дочернюю страницу по ее ярлыку. Родительская и дочерняя страницы разделяются знаком слеша

exаmple.ru/?pagename=country/russia

5. Получим страницы только верхнего уровня, исключив дочерние

exаmple.ru/?post_parent=0

 

Параметры типов страниц

post_type (строка) - получает записи определенного типа

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

any - получаем все типы записей кроме revision

attachment - выводим вложения для записей

page - страница.

post - пост.

revision - ревизия.

Также в качестве параметров могут передаваться произвольные типы записей, созданные плагинами, шаблонами или пользователем

 

Примеры

1. Получим только записи типа post

exаmple.ru/?post_type=post

2. Получим записи произвольного типа, исключив все остальные

exаmple.ru/?post_type=orders

 

Параметры таксономий

Получаем записи из определенной таксономии

Здесь рассматриваются пользовательские таксономии.

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

 

Примеры

1. Получим все записи из таксономии prodcat принадлежащие ее термину slug_term

exаmple.ru/?prodcat=slug_term

 

Параметры времени

Получаем записи за определенный период времени

year (число) - указываем нужный год публикации записей

monthnum (число)- указываем нужный месяц публикации записей

w (число) - указываем нужную неделю публикации (с 0 до 53)

day (число) - день публикации (1 - 31)

hour (число) - час публикации (0 - 23)

minute (число) - Минута (0 - 60)

second (число) - Секунда (0 - 60)

m (число) - ГодМесяц (201306)

 

Примеры

1. Получим записи за 2012 год

exаmple.ru/?year=2012

2. Выведем все публикации за 12 сентября 2011 года

exаmple.ru/?m=201109&day=12

 

Параметры сортировки и порядка

Сортируют выводимые записи и устанавливают порядок сортировки.

 

order (строка) - Направление сортировки по параметру orderby, может быть:

ASC - по порядку, от меньшего к большему (1, 2, 3; a, b, c).

DESC - в обратном порядке, от большего к меньшему (3, 2, 1; c, b, a) .

 

orderby (строка) - Поля по которым можно сортировать посты. Может быть

none - не сортировать, выводить прям как находиться в БД. равносильно сортировке по ID. С версии 2.8.

ID - сортировка по ID.

author - сортировка по ID авторов.

title - сортировка по заголовку.

name - по названию поста (слаг поста).

date - сортировка по дате публикации.

modified - сортировка по дате изменения.

parent - сортировка по значению поля parent.

rand - случайный порядок.

comment_count - сортировка по количеству комментариев. С версии 2.9.

menu_order - стандартно используется для страниц и вложений. Порядковый номер указывается на странице редактирования поста.

meta_value Важно: параметр meta_key так же должен быть определен. Заметка: сортировка будет алфавитной и будет не логична, если значения

произвольных полей числа (будет, например, так 1, 3, 34, 4, 56, 6 и т.д., а не 1, 3, 4, 6, 34, 56).

meta_value_num - сортировка по произвольным полям значения которых являются числами.

 

Примеры

1. Сортировка по заголовку выводимых записей

exаmple.ru/?orderby=title&order=DESC

2. Сортировка по количеству комментариев

exаmple.ru/?orderby=comment_count

3. Отсортируем выводимые товары по цене

exаmple.ru/?post_type=product&orderby=meta_value&meta_key=price

 

Параметры поиска

Получаем посты соответствующие поисковому запросу

s - параметр, значением которого является поисковый запрос

 

Пример

1. Получить записи по поисковому запросу "контент"

exаmple.ru/?s=контент

 

Комбинации запросов

1. Получим записи из категории 4  за 2012 год

exаmple.ru/?cat=4&year=2012

2. Получим все записи автора admin из категории 5 и 6 и отсортируем по заголовку

exаmple.ru/?author_name=admin&cat=5,6&orderby=title&order=DESC

 

И так, рассмотрев перечисленные параметры, которые мы можем передавать в запрос, можем приступить к написанию несложных форм фильтров, которыми пользователи нашего сайта могут пользоваться на вашем сайте. Все возможные варианты не покажу, но направление развития задам)

1. Предоставим фильтр по которому пользователь сможет получить записи из нужной категории, соответствующие поисковому запросу с указанием сортировки полученных результатов по заголовку по возрастанию или по убыванию:

2. Фильтр получения товаров принадлежащих таксономии products, с возможностью сортировки результата по дате добавления или заголовку и имеющих определенные метки:

Освоив этот материал вы сможете легко создавать несложные фильтры не только для своих сайтов, но и для чужих) и более этот вопрос для вас не будет неразрешимой проблемой.

Если вам недостаточно предоставленных тут примеров реализации запросов к БД или вы думаете, что данная информация является неполной, то прошу отписаться в комментариях, будем дополнять материал вместе. Делитесь созданными фильтрами для своих сайтов, наверняка они будут интересны другим.

51

Автор публикации

не в сети 6 часов

Андрей CS

10k

пока занят

Комментарии: 1780Публикации: 411Регистрация: 30-11--0001Продаж/Покупок: 16725/114