WordPress, одна из самых мощных систем с открытым исходным кодом для ведения блогов и управления контентом, используется для обеспечения большей части сетей. До четверти всех веб-сайтов используют WordPress.
В отличие от многих других CMS, WordPress любим многими за гибкость и настраиваемость. Таксономии, одна из основных функций WordPress, позволяет организовать контент так, как вам нужно. Несмотря на то, что WordPress поставляется с несколькими стандартными таксономиями, вы можете добавлять столько пользовательских таксономий, сколько пожелаете.
Однако для того, чтобы таксономии вели себя так, как вы этого хотите, может потребоваться использовать недокументированные подходы.
В этой статье вы узнаете, как вы можете определять эксклюзивные пользовательские таксономии в WordPress, которые ведут себя намного больше как категории, чем теги, что позволяет вам классифицировать ваши посты гораздо более строго, чем вы можете из коробки.
Что такое таксономия?
Согласно кодексу WordPress:
Таксономия – это способ сгруппировать вещи.
Например, связка фруктов разных типов может быть сгруппирована по различным характеристикам, а затем этим группам могут быть назначены имена.
В WordPress таксономии используются для группировки сообщений, страниц и даже пользовательских типов сообщений в разных группах.
Названия для разных группировок в таксономии называются терминами. Взять, к примеру, фрукты и как их можно сгруппировать по цветам. В этом случае названия разных цветов будут термины.
По умолчанию WordPress поставляется с четырьмя таксономиями: категория, тег, категория ссылки и формат публикации. Вы можете узнать больше об этих таксономиях по умолчанию здесь.
Среди этих встроенных таксономий категории и теги очень похожи, но имеют одно важное отличие: категории являются эксклюзивными таксономиями (т. Е. Для каждой публикации вы можете выбрать не более одной категории), тогда как каждой публикации может быть назначено несколько тегов.
Более того, категории обычно предопределены, а теги могут быть определены по мере необходимости.
Определение пользовательских таксономий
Вы можете определить пользовательскую таксономию, используя register_taxonomy()
функцию. Вы можете узнать больше о функции здесь.
Чтобы увидеть, как работает эта функция, давайте определим собственную таксономию для постов с фотографиями пейзажей.
В приведенном выше фрагменте мы определяем новую таксономию для сообщений, называемых
view
.
Вы можете подумать об этой таксономии, используемой для категоризации фотографий в зависимости от вида или характера представлений, представленных на фотографиях (например, горы, озеро или лес).
Как всегда, сообщения, относящиеся к определенным условиям этой категории, будут отображаться в / view / {view_name} .
Строка возможностей в приведенном выше фрагменте не является обязательной. Без этого WordPress будет использовать возможности по умолчанию для тех же пользователей, что и сообщения. Как показано выше, это позволит любому пользователю с настраиваемой возможностью «edit_guides» назначать таксономию сообщению, а любому пользователю с настраиваемой возможностью «publish_guides» создавать новые элементы таксономии.
Согласно официальной документации, можно определить четыре возможности:
Возможности таксономии включают в себя
assignterms
,editterms
,manageterms
(отображает таксономии в админ навигации) иdeleteterms
.
Как используются таксономии
В вашем коде вы можете использовать wp_set_object_terms()
функцию для добавления терминов к объектам, используя таксономию. Вы можете перечислить существующие термины, используя the_terms()
функцию. Кроме того, вы можете использовать эту wp_tag_cloud()
функцию для создания облака терминов для вашей пользовательской таксономии. Вы можете узнать больше об этих функциях здесь .
Со стороны пользовательского интерфейса WordPress создает новый мета-блок для сообщений для каждой таксономии. Мета-блок аналогичен мета-блоку Теги, который позволяет вам связать одно или несколько условий с вашим постом. Это то, что WordPress делает по умолчанию, и это то, что мы можем изменить, сделав таксономию эксклюзивной: заставьте пользовательскую таксономию вести себя как таксономия категории.
Принудительная эксклюзивность в таксономиях
Когда мы создаем пользовательскую таксономию с помощью register_taxonomy()
метода, WordPress добавляет мета-блок с выбором нескольких элементов на страницу редактирования поста:
Используя этот мета-блок, пользователь может выбрать любое количество существующих (уже использованных) терминов, а также может добавить новые термины с помощью текстового поля.
Чтобы создать подобную категории таксономию, где каждая публикация принадлежит не более чем одной категории из набора предопределенных категорий, вы можете сделать это, немного настроив WordPress:
- Скрыть мета-поле по умолчанию, созданное WordPress.
- Создайте пользовательский мета-блок на странице редактирования поста, который предоставит элементы управления для выбора одного элемента.
- Сохраните значение таксономии при сохранении записи.
Давайте посмотрим на каждый из шагов.
Скрыть мета-бокс по умолчанию, созданный WordPress
Для этого нам нужно установить show_in_quick_edit
и meta_box_cb
параметры false
при звонке register_taxonomy
.
Первый параметр скрывает таксономию на панели быстрого / массового редактирования, а второй параметр скрывает ее на странице редактирования сообщения:
Если мета-поле по умолчанию скрыто, элементы могут быть добавлены в набор доступных терминов таксономии через страницу управления таксономией:
Создайте пользовательский мета-бокс на странице редактирования
Чтобы создать собственный мета-блок, мы можем использовать add_meta_boxes
хук WordPress. Вы можете узнать больше о крючке здесь .
add_action('add_meta_boxes', 'add_custom_meta_box');
function add_custom_meta_box(){
add_meta_box( 'taxonomy_box', __('Custom Exclusive Taxonomy'), 'fill_custom_meta_box_content', 'post' ,'side');
}
Мы вызываем add_meta_box
метод со следующими аргументами:
taxonomy_box
– Идентификатор мета-блока__('Custom Exclusive Taxonomy')
– Название мета-боксаfill_custom_meta_box_content
– функция, которая используется для заполнения содержимого мета-поляpost
– Это указывает на то, что мета-поле должно появиться на странице редактирования сообщения.side
– Это указывает место, где мета-поле должно быть вставлено.
Обратите внимание, как мы указали taxonomy_box
в качестве идентификатора. Тем не менее, именно функция в третьем параметре позволит нам определить, что будет в поле.
Теперь мы реализуем fill_custom_meta_box_content
функцию:
Здесь мы сначала извлекаем все термины (т. Е. Существующие значения) таксономии. Мы будем использовать их для отображения списка элементов управления переключателями.
Далее мы извлекаем текущий выбранный термин таксономии, используя get_the_terms()
функцию – нам нужно, чтобы был выбран соответствующий переключатель.
Обратите внимание, что эта функция возвращает массив. Это связано с тем, что по умолчанию сообщение может иметь любое количество терминов, связанных с ним. По нашему предположению, запись имеет не более одного термина, поэтому мы получаем доступ к первому элементу массива. (Это нормально, если массив пуст; мы получим null
в качестве текущего значения и не будет выбран ни один переключатель).
В исходном HTML-коде используются custom_taxonomy
радиокнопки и соответствующие термины в качестве значений; атрибуты идентификатора переключателя просто используются для подключения к тегам меток. В результате мы получаем следующий пользовательский мета-блок:
Сохранить значение таксономии при сохранении сообщения
Наконец, нам нужно сохранить значение таксономии при сохранении сообщения. Для этого мы можем использовать save_post
крючок:
add_action('save_post', 'save_custom_taxonomy');
function save_custom_taxonomy($post_id){
if ( isset( $_REQUEST['custom_taxonomy'] ) )
wp_set_object_terms($post_id, (int)sanitize_text_field( $_POST['custom_taxonomy'] ), 'custom_taxonomy');
}
И это все! Мы сделали.
Теперь вы знаете, как определить пользовательскую таксономию, которая будет вести себя как встроенная таксономия категории.
Примечание: WordPress принял запрос на добавление функции, чтобы упростить переключение эксклюзивности для пользовательских таксономий. Тем не менее, билет не видел много активности в течение некоторого времени.
Заворачивать
Таксономии – очень мощная и полезная функция в WordPress. Изначально им не хватает возможности выполнять строгую категоризацию сообщений, но, как и почти все в WordPress, таксономии и связанные с ними функции чрезвычайно настраиваемы. Это позволяет нам добавить эту часто необходимую способность в несколько шагов.
Представленный здесь подход также можно использовать для создания еще более настраиваемого пользовательского интерфейса на страницах редактирования сообщений для выбора термина таксономии.
Я надеюсь, что вы нашли этот краткий учебник по определению эксклюзивных пользовательских таксономий полезным!
Источник записи: https://www.toptal.com