Как добавить фильтр в список записей в админке WordPress?

Выведя дополнительные столбцы в админке, хотелось бы иметь возможность фильтрации по этим полям. Как это делать, покажу на примере фильтрации по мета-полю публикации.

Если вы читаете данный гайд, то уже знаете :

Если нет, восполните сначала данные пробелы, чтобы двигаться дальше.

Итак, мы создали свой кастомный тип публикации, в котором храним описания филиалов нашей розничной сети. При регистрации данного типа материала (filials), я указал, что буду использовать meta-поля (custom_fields).

WordPress позволяет прямо в редакторе публикации создавать новые поля, подключая их к редактируемой статье. Я решил, что буду задавать для каждого филиала поле City, т.е. город, где расположен данный филиал. Соотвествующий столбец был настроен в списке публикаций админки WP.

Для внедрения фильтра понадобится две зацепки  :

  • Фильтр (filter) parse_query — позволяет добавить HTML код в панель фильтров админки,
  • Действие (action) restrict_manage_posts — позволяет внедриться в запрос списка выводимых записей и сделать нужные нам манипуляции.

Реализацию этих зацепок нужно разместить в function.php своей темы или коде своего плагина.

У вас будут свои мета-поля, но данный каркас вы легко приспособите для собственной задачи.

Мало букафф? Читайте есчо !

Добавление и обработка кастомных полей в заказе woocommerce

Сентябрь 10, 2019 г.

Плагин woocommerce - интернет-магазин для WP - и так показывает огромное число полей на форме оформления заказа (т.н. checkout), и обычно требуется убрать/спрятать ...

Читать

Получение кода публикации, со страницы которой была отправлена форма WPCF7

Июнь 9, 2018 г.

В продолжение статьи о сохранении данных формы в БД в виде публикации в WP, я собираюсь рассказать о том как получить код публикации, со страницы которой была выполнена отправка данных формы. Находясь внутри обработчика wpcf7_mail_sent, вы не сможете ...

Читать

Как добавить в contact form 7 плейсхолдер элемента

Апрель 1, 2023 г.

Неудобно, что прямо в редакторе нельзя задать нужные атрибуты, приходится искать либо в коде, чтобы подсмотреть как это реализовано, или на форумах. Нужно было создать элементы формы с атрибутом placeholder. Оказалось, что wpcf7 понимает следующую ...

Читать

Обновление Alpha cache - v1.2

Март 27, 2017 г.

Уже пошел 5й год, как я выпустил Alpha Cache. Писал этот модуль для собственных нужд,  не хотелось разбираться с тонкостями настройки готовых модулей, и задача мне казалась интересной. Последний раз обновлял модуль больше года назад, т.к. особых ...

Читать
 

Комментарии к «Как добавить фильтр в список записей в админке WordPress?»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий:

Много комментариев в “Как добавить фильтр в список записей в админке WordPress?”

  1. Александр:

    А если нужно N-фильтров и все они являются кастомными полями?

    $query->query_vars[‘meta_key’] = ‘City’;
    $query->query_vars[‘meta_value’] = $_GET[‘ADMIN_FILTER_FIELD_CITY’];

    Как в query_vars передать несколько мета-данных. Я это пойму конечно через время (доки почитаю, погуглю), просто наверняка и другим будет это интересно

    • Александр:

      Или можно как-то массив передать?

      • Можно и массив передавать, если нужно:) К примеру, вы создаёте select с множественным выбором и именем переменной myvar[]. При выборе нескольких элементов списка получите массив в $_GET[‘myvar’].

    • WP_query позволяет собирать несколько условий https://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters

      для этого нужно собрать массив вида