«
»
WordPress

WordPress Эксклюзивное Учебное пособие по Таксономии

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

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

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

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

Что такое таксономия?

Согласно кодексу WordPress:

Таксономия – это способ сгруппировать вещи.

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

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

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

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

Среди этих встроенных таксономий категории и теги очень похожи, но имеют одно важное отличие: категории являются эксклюзивными таксономиями (т. Е. Для каждой публикации вы можете выбрать не более одной категории), тогда как каждой публикации может быть назначено несколько тегов.

Более того, категории обычно предопределены, а теги могут быть определены по мере необходимости.

Определение пользовательских таксономий

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

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

function view_init() { register_taxonomy( 'view', 'post', array( 'label' => __( 'View' ), 'capabilities' => array( 'assign_terms' => 'edit_guides', 'edit_terms' => 'publish_guides' ) ) ); } add_action( 'init', 'view_init' );

В приведенном выше фрагменте мы определяем новую таксономию для сообщений, называемых

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.

Снимок экрана: настраиваемый мета-блок таксономии, в который можно добавлять элементы в набор доступных терминов

Первый параметр скрывает таксономию на панели быстрого / массового редактирования, а второй параметр скрывает ее на странице редактирования сообщения:

register_taxonomy( 'custom_taxonomy', 'post', array( 'labels' => array( 'name' => 'Custom Exclusive Taxonomy' ), 'show_in_quick_edit' => false, 'meta_box_cb' => false ));

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

Снимок экрана: мета-бокс с именем Custom Exclusive 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функцию:

<?php function fill_custom_meta_box_content( $post ) { $terms = get_terms( array( 'taxonomy' => 'custom_taxonomy', 'hide_empty' => false // Retrieve all terms )); // We assume that there is a single category $currentTaxonomyValue = get_the_terms($post->ID, 'custom_taxonomy')[0]; ?> <p>Choose taxonomy value</p> <p> <?php foreach($terms as $term): ?> <input type="radio" name="custom_taxonomy" id="taxonomy_term_<?php echo $term->term_id;?>" value="<?php echo $term->term_id;?>"<?php if($term->term_id==$currentTaxonomyValue->term_id) echo "checked"; ?>> <label for="taxonomy_term_<?php echo $term->term_id;?>"><?php echo $term->name; ?></label> </input><br/> <?php endforeach; ?> </p> <?php }

Здесь мы сначала извлекаем все термины (т. Е. Существующие значения) таксономии. Мы будем использовать их для отображения списка элементов управления переключателями.

Далее мы извлекаем текущий выбранный термин таксономии, используя get_the_terms()функцию – нам нужно, чтобы был выбран соответствующий переключатель.

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

В исходном HTML-коде используются custom_taxonomyрадиокнопки и соответствующие термины в качестве значений; атрибуты идентификатора переключателя просто используются для подключения к тегам меток. В результате мы получаем следующий пользовательский мета-блок:

Снимок экрана: функция "Добавить новый тег" для пользовательской эксклюзивной таксономии теперь доступна на боковой панели панели управления WordPress.

Сохранить значение таксономии при сохранении сообщения

Наконец, нам нужно сохранить значение таксономии при сохранении сообщения. Для этого мы можем использовать 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

Связанные записи
WordPressПлагины

Полный обзор лучших плагинов для календаря бронирования в WordPress

ElementorWordPressВсе для разработки плагиновПлагины

Создание пользовательских виджетов Elementor - правильный путь! | Бен Маршалл

WordPressПлагины

Swift Performance - Рекомендуемые настройки производительности | Полное руководство 2020

WordPressВсе для разработки плагиновВсе для разработки шаблонов

Настройка PHP CodeSniffer в PhpStorm с помощью стандартов кодирования WordPress | Келлен Мейс