Фильтр по произвольным полям wordpress плагин. Добавляем фильтр таксономий на Ajax в поиск WordPress

16.04.2019

Мало кто знает, но в WordPress имеется очень хорошая возможность назначить произвольные поля (более известные как мета-данные) к любой записи. По сути, это самый мощный компонент постов и типов контента в WordPress, который редко применяется начинающими пользователями. Благодаря этой инструкции, вы сможете лучше понять, как можно использовать произвольные поля в WordPress.

Что такое произвольные поля для записей в WordPress

Произвольные поля — это мета-данные, которые задаются как пары ключ / значение, где «ключ» — имя, идентифицирующее конкретное поле.

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

Использование произвольных полей в WordPress

Давайте рассмотрим очень простой пример мета-данных в действии. Создайте новую запись и наполните ее содержимым. После чего, нажмите на кнопку «Настройки экрана» и поставьте флажок на опции «Произвольные поля». Под содержимым должен появится соответствующий блок с формой для заполнения.

Давайте используем эту форму, чтобы показать настроение автора в момент написания статьи. Нажмите «Добавить новое поле» и заполните строки имя / значение, как Сегодняшнее настроение / Счастлив. Как только вы добавите это поле и сохраните пост, дополнительная информация, связанная со статьей, запишется в базу данных. Ее можно будет отобразить в любом месте вашей темы.

Поскольку это очень простой пример, мы будем использовать самый простой способ отображения этой информации. Допустим, что вы хотите показать свое настроение перед тем, как человек прочитает ваш пост. Для этого, перейдите в редактор внешнего вида и откройте файл «single.php». Найдите там цикл «loop», начинающийся с

while (have_posts()) : the_post();

и добавьте перед ним следующий код:

Теперь, на странице со статьей будет отображаться что-то вроде этого:

Сегодняшнее настроение: Счастлив

Этот способ отображения удобен, когда у вас есть только одно поле, но если у вас их 5, и вы хотите показать их в 5 разных местах? Тогда проще использовать хук «get_post_meta». Допустим, вы хотите отобразить только одно поле мета-данных в отдельном месте темы. Вам нужно добавить следующий код перед циклом «loop»:

ID, "Сегодняшнее настроение" , true); ?>

А что делать, если у вас есть дополнительные мета-данные, например, для песен, которые вы слушали во время написания поста? В таком случае, вы можете создать несколько ключей «Песни», имеющих различные значения. А затем, вставить перед циклом подобный код:

ID, "Песни", false); ?>
Этот пост вдохновлен музыкой:


    echo "
  • ".$track."
  • ";
    } ?>

Обратите внимание, что важную роль здесь играет третий параметр «false». Он указывает на то, что функция будет возвращать массив значений для данного ключа. Это очень удобный способ для отображения нескольких значений одного поля.

Расширенные возможности произвольных полей в WordPress

Использование мета-данных может выходить далеко за рамки показа настроения и песни. Например, некоторые популярные плагины, такие как Yoast’s WordPress SEO и WP-Post Ratings, а также многие другие, используют мета-данные для реализации своих функциональных возможностей.

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

Фильтр записей по произвольным полям

В WordPress есть очень хорошая функция «query_posts», которая, кроме всего прочего, имеет параметр для пользовательских полей. Таким образом, мы может использовать ее, чтобы создать своеобразный фильтр для отображения записей с определенным ключом / значением. Все, что вам нужно сделать, это вставить тег «query_posts» выше оператора цикла «loop».

Допустим, вы хотите сделать фильтр по всем статьям, чтобы отобразить только те, которые вы написали во время прослушивания музыки. Чтобы создать такой фильтр, вам нужно вставить следующий запрос перед началом цикла:

query_posts("meta_key=Песни");

Благодаря этому коду, отображаться будут только определенные статьи, имеющие мета ключ «Песни», а остальные попадут под фильтр. Таким образом, вы можете создать новую страницу, вставить в нее данный код, и на ней будут находиться все записи, имеющие такой ключ.

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

query_posts("meta_key=Песни&meta_value=Metallica");

Поиск записей по произвольным полям

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

К сожалению, стандартный поиск ВордПресс не учитывает дополнительные данные, а только заголовок и содержание поста. Но эту проблему можно решить, улучшив поиск, с помощью плагина Custom Fields Search by BestWebSoft. Этот плагин позволяет добавить любое пользовательское поле в стандартный поиск ВордПресс. Все, что вам нужно, это выбрать те поля, которые поиск должен пропускать через фильтр.

Использовать этот плагин достаточно просто. Как только вы установите и активируете его, в меню административной панели появится пункт «BWS Plugins», открывающий страницу настроек плагина. На этой странице будет отображен список всех мета-данных, созданных на вашем сайте. Вам остается только выбрать нужные поля, чтобы стандартный поиск их учитывал, и сохранить результат.

Скрытие области для добавления полей

Часто, когда вы настраиваете сайт для клиентов, которые не очень «технически подкованы» в этом вопросе, очень уместно было бы удалить область для добавления мета-данных и заменить ее более удобным интерфейсом. Это особенно важно, когда получается много вариантов настройки мета-данных и поиск нужных становится очень сложным.

Удалить их достаточно просто. Вам нужно только открыть файл «functions.php» своей темы и добавить туда следующие строки:

add_action("admin_init","remove_custom_meta_boxes");
function remove_custom_meta_boxes() {
remove_meta_box("postcustom","post","normal");
remove_meta_box("postcustom","page","normal");
}

Заключение

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

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

Скачать плагин можно отсюда . Ну а теперь - подробности.

Плагин фильтрует записи в трех режимах:

  1. По рубрикам;
  2. По меткам;
  3. По рубрикам и меткам.

Несколько особенностей работы фильтра:

  • eсли запись размещена хотя бы в одной указанной в настройках фильтра рубрике, она будет выведена;
  • если запись содержит хотя бы одну указанную в настройках фильтра метку, она будет выведена;
  • фильтрация “по рубрикам и меткам” работает по следующему правилу - запись будет отображена только в случае, если она содержит указанный тег И содержится в указанной рубрике.

Возможно указание количества записей на страницу отдельно для каждой страницы. По умолчанию используется значение “Записей на страницу” из настроек Wordpress (Настройки → Чтение).

Код для страницы

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

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

Выше приведен пример развернутой записи кода со всеми параметрами и их значениями по умолчанию. Указывать все параметры необязательно. Определение параметров:

  • heading_tag - параметр для задания тега заголовка записи. По умолчанию - h2 ;
  • heading_class - параметр для задания стиля заголовка. По умолчанию - entry-title ;
  • content_tag - параметр для задания тега выдержки записи. По умолчанию - div ;
  • content_class - параметр для задания стиля выдержки записи. По умолчанию - entry-content ;
  • per_page - параметр для задания количества записей на страницу. По умолчанию - значение из Настройки → Чтение или 10.

Свои комментарии, отзывы, и т.п. можете оставить здесь. Также можете создать обсуждение . Если вы нашли какие-либо баги, или у вас есть предложение о том, как улучшить плагин, вы можете использовать инструмент для отслживания ошибок . Если вы хотите локализовать плагин на свой язык, вы можете взять файл wp-posts-filter.pot за основу для перевода. О том, как создать файл локализации, можно прочитать . Если вы хотите, чтобы ваша локализация была включена в дистрибутив плагина, свяжитесь со мной.

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

Плагин автоматически добавляет правила перезаписи для создания симпатичных отфильтрованных URL без использования JS. Beautiful Taxonomy Filters был создан шведским разработчиком плагинов Jonathan de Jong. При создании плагина он использовал WordPress Plugin Boilerplate для организации кодовой базы посредством стандартизированного объектно-ориентированного подхода.

Плагин использует select2 для замены уродливых полей выбора элементов на привлекательные, дружественные к пользователям выпадающие списки. Если JS не поддерживается, то эти списки будут деградировать до стандартных полей выбора. Ниже приведен пример, основанный на моих тестах; я применил плагин к произвольному типу данных портфолио:

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

Beautiful Taxonomy Filters имеет страницу настроек в панели администратора для активации типов записей, простого исключения таксономий, включения ссылки «очистить все», отключения заголовков для активных фильтров, изменения дизайна, а также добавления произвольных CSS-стилей.

Возможности плагина следующие:

  • Активация фильтрации для любого зарегистрированного публичного типа записей
  • Исключение таксономий, для которых не требуется фильтрация
  • Создание красивых URL. Вы не будете видеть уродливые /posttype/?taxonomy1=term. Вместо этого вы увидите /posttype/taxonomy/term.
  • Включает полностью функциональный фильтр для размещения в вашей теме
  • Возможность вывода вашим посетителям информации о текущей активной фильтрации
  • Позволяет включать произвольные GET-параметры, что дает возможность расширения фильтрации.
  • Многочисленные фильтры и действия для изменения поведения плагина.

В данный момент Beautiful Taxonomy Filters не поддерживает выбор многочисленных термов из одной и той же таксономии. Эта возможность заложена в дорожную карту разработки. Автор плагина отмечает, что он надеется реализовать эту опцию в будущей версии вместе с красивыми постоянными ссылками. Если постоянные ссылки не получится прикрутить, то в таком случае автор планирует добавить возможность выбора красивых ссылок, чтобы раскрыть для себя всю мощь фильтрации многочисленных термов.

Beautiful Taxonomy Filters не поддерживает встроенный тип записей post. Это сделано по той причине, что автор плагина не смог создать надлежащие правила перезаписи для фильтрации многочисленных термов, поскольку они обрабатываются в WordPress несколько иначе, чем другие произвольные типы записей. Если вам требуется решение для фильтрации обычных записей, вам придется создавать его самостоятельно, поскольку оно не включено в плагин.

Плагин предлагает простой способ добавления многочисленных фильтров таксономий к архивам произвольных типов записей. Он очень удобен, и его легко можно расширить при помощи разных фильтров и действий. Я протестировал его и нашел, что плагин работает именно так, как задумано. Плагин Beautiful Taxonomy Filters можно скачать с сайта WordPress.org.

Всем привет, сегодня хочу продолжить тему поиска по WordPress. На этот раз я расскажу вам как сделать поиск по полям wordpress (имеется ввиду произвольным полям, пользовательским, дополнительным полям они же custom fields).

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

Зачем нужен wordpress поиск по дополнительным полям

В первую очередь поиск по полям wordpress нужен, если у вас не стандартный сайт или блог на WP, в смысле, информация записанная не только в тексте (контенте) поста.

Штатная функция поиска WP, к сожалению, ищет только в заголовках и тексте поста или страницы. На большее она не способна, по этому приходится или писать свою функцию поиск по дополнительным полям или использовать плагин.

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

Поиск по произвольным полям wordpress позволяет:

  • выводить более релевантные результаты;
  • манипулировать с поиском WP;
  • показывать результаты, в которых не встречается поисковая фраза (например указывать слова с ошибкой и тому подобное).

Как организовать поиск по полям wordpress

Думаю существует множество вариантов реализации поиска по произвольным полям, один из них написание собственных MySQL запросов. Но этот способ не доступе рядовом блогеру, да и вряд ли он будет лучше чем поисковый плагин. Хотя иногда используется и самопальный поиск, например для создания фильтров и прочих задач. Но сегодня не о них. Сейчас я покажу вам несколько плагинов поиска для Вордпресс, которые умеют делать поиск по полям.

Поиск по полям на Relevanssi

Отличный плагин, который позволяет по мимо прочего делать поиск по полям вордпрес. Весь процесс настройки очень простой и интуитивно понятный.

Имеется русский язык интерфейса и многое другое.

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

Чтобы сделать поиск по произвольным полям wordpress вам нужно:


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

Поиск по произвольным полям на Search Everything

Второй плагин для поиска по дополнительным полям, который я хочу порекомендовать, - Search Everything. Он имеет меньше настроек чем предыдущий, но это не мешает ему хорошо делать поиск по полям wordpress.

Чтобы подключить поиск по произвольным полям вам нужно:


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

Зачем использовать фильтр таксономий на Ajax в поиске WordPress?

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

Первым делом вам необходимо установить и активировать плагин Ajax WP Query Search Filter . После активации он добавит новый элемент меню “Ajax WPQSF” в сайдбар административной панели сайта. Клик на это меню переместит вас на страницу плагина, где вы можете нажать на кнопку Add New Search Form для создания своей формы поиска.

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

Следующая настройка — выбор таксономии. Вы можете выбрать логические зависимости между запросами таксономий. Например, если пользователь выбирает цветы и животные, вы можете указать плагину, обрабатывать ли оба запроса одновременно или же выводить результат, даже если найден результат по одной из таксономий. Далее необходимо добавить таксономию, для этого кликнув на кнопку Add Taxnomy .

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

Следующая вкладка позволяет настраивать результаты поиска и другие параметры. На этой вкладке вы можете указать дефолтное слово для поисковой формы. Если пользователь выберет таксономию или же произвольное мета поле и введет ключевое слово. то плагин выполнит поисковый запрос слова и проигнорирует выбор пользователем таксономии и произвольного мета поля.

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

Мы надеемся, что эта статья помогла вам добавить фильтр таксономий на Ajax в поиск WordPress на ваш сайт. Использование этого продвинутого поиска и функция сортировки может помочь вам создать простые, но очень эффективные фильтры для сортировки и поиска на вашем сайте на WordPress.