Статьи

Как создать свои собственные таксономии WordPress

Этот учебник поможет изложить все, что вам нужно знать, когда дело доходит до таксономии WordPress.

Мы начнем с обсуждения того, что такое таксономии, как с ними можно взаимодействовать и почему они важны.

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

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

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

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

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

  • категории
  • Теги

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

Когда вы создаете категорию или тег, вы создаете термин в таксономии. Это полезно знать: категории и теги являются просто реализацией WordPress по умолчанию. Вы можете создавать свои собственные «Таксономии» с «Условиями», которые соответствуют вашим потребностям.

Категории и теги Административные области

WordPress автоматически создает области администрирования, чтобы вы могли легко добавлять теги и категории. Эти административные области расположены в меню «Сообщения» как подменю.

WordPress Taxonomies_Image 1

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

WordPress Taxonomies_Image 2

Присвоение категорий и тегов вашим сообщениям

Самый простой способ прикрепить ваши категории и теги к вашему сообщению — это редактор WordPress.

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

WordPress Taxonomies_Image 3

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

Что делает WordPress со своими таксономиями?

WordPress сделает ряд вещей со своими встроенными таксономиями, включая:

  • Создайте страницу с одним термином: WordPress создаст новую страницу для этого термина. URL самого термина будет названием таксономии, сопровождаемой названием термина. Например, если у вас есть «категория» с именем «Featured», URL будет / category / Featured. Целью этой страницы является, по сути, выступить в качестве страницы списка.

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

  • Перечислите свои термины внутри виджетов: WordPress поставляется с несколькими «виджетами», которые позволяют легко добавлять контент в области виджетов вашего сайта (например, боковые панели и нижние колонтитулы). И ваши виджеты «категории» и «облако тегов» будут использовать ваши термины и отображать их в виде интерактивных ссылок.

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

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

Создание собственных пользовательских таксономий

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

Как зарегистрировать свою собственную таксономию

Чтобы создать свои собственные таксономии, вам нужно определить свою таксономию с помощью функции register_taxonomy . Эта функция принимает три значения следующим образом: register_taxonomy($taxonomy, $object_type, $args) . Краткое описание этих значений подробно описано ниже:

  1. $taxonomy — Имя новой таксономии, которую вы создаете. В тех случаях, когда WordPress называет их таксономию «категориями» или «тегами», вы можете указать другое имя, например «участники». Это имя должно быть длиной до 32 символов и может содержать только буквы и знак подчеркивания.

  2. $object_type — имя типа сообщения, к которому вы хотите присоединить эту таксономию. Тип поста WordPress имеет как категории, так и теги. Возможно, вы захотите прикрепить новую таксономию к существующему типу поста или к вашему собственному типу поста, который вы ранее создали. У вас есть два варианта в этом случае:

    • Одна строка, представляющая имя типа записи, например, $object_type = 'post'

    • Массив строк для имен типов $object_type = array('post','page') таких как $object_type = array('post','page')

  3. $args — это ваши аргументы, используемые для установки различных параметров вашей новой таксономии. Есть несколько вариантов, которые вы можете установить. Некоторые из них являются обязательными, но большинство являются необязательными (WordPress будет обрабатывать любые пропущенные аргументы):

    • label — множественное имя для вашей таксономии, например «участники», если вы создавали членскую таксономию.

    • labels — массив ваших имен и значений, которые будут использоваться для таксономии. Они используются в административных областях для управления. Этот массив определяет все метки, используемые для вашей таксономии. Если вы оставите это поле пустым, WordPress будет использовать ваше значение label и устанавливать их. Кроме того, вы можете пропустить определенные ненужные значения, и они будут по умолчанию.

      • name — множественное название таксономии.

      • singular_name — имя singular_name используемое для одного термина в рамках таксономии.

      • menu_name — текст, который будет отображаться в административной части WordPress (вдоль левого меню администрирования).

      • all_items — Просмотр всех терминов из таксономии.

      • view_item — Просмотр одного термина из таксономии.

      • update_item — Обновление одной таксономии.

      • add_new_item — добавить новый текст термина.

      • parent_item — Используется с иерархическими таксономиями, обычно установленными в Parent $taxonomy_name .

      • parent_item_colon — То же, что и выше, но также добавление двоеточия в конец.

      • search_items — поиск текста, используемого при просмотре вашей таксономии.

      • popular_items — Имя популярного термина, используется в разделе внутреннего администрирования для неиерархических терминов. Может быть легко установлен на Popular $taxonomy_name .

      • separate_items_with_commas — этот текст отображается для неиерархических таксономий. Этот текст отображается в мета-поле таксономии для отдельных сообщений (это отображается непосредственно под кнопкой «Добавить»).

      • add_or_remove_items — этот текст отображается для неиерархических таксономий. Этот текст отображается только с отключенным JavaScript в метаболе таксономии для отдельных страниц.

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

      • not_found — Этот текст отображается для неиерархических таксономий внутри мета-поля таксономии только после того, как вы нажали на выделенный текст «Выберите из наиболее часто используемых». После нажатия WordPress будет искать наиболее часто используемые термины. Если их нет, этот текст будет отображаться.

    • public — Определяет, будет ли показана ваша таксономия, и будет ли она запрашиваться.

    • show_ui — Определяет, будет ли WordPress отображать область администрирования для вашей таксономии. Если это не установлено, у вас не будет зоны для управления вашими условиями.

    • show_in_nav_menus — Определяет, будут ли термины из этой таксономии выбираться в вашем меню навигации.

    • show_tagcloud — Определяет, будет ли WordPress включать термины вашей таксономии в виджет облака тегов.

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

    • show_admin_column — определяет, будут ли условия вашей таксономии отображаться в новом столбце для ваших записей. Если установить для этого параметра значение «true», будет отображаться новый столбец для указанного типа сообщения, в котором будут отображаться все его прикрепленные термины.

    • hierarchical — определяет, могут ли ваши таксономии иметь уровни, такие как родители / дети (например, категории), или все они плоские по уровню (например, теги).

    • update_count_callback — Имя функции для вызова, когда произошло обновление для прикрепленного типа сообщения. При изменении типа записи этой таксономии будет вызвана эта функция.

    • query_var — Определяет имя, используемое для запроса типа сообщения. По умолчанию это имя самой таксономии. Если задана строка, эта строка будет использоваться. Лучше всего оставить значение по умолчанию.

    • rewrite — это можно установить несколькими способами. Установка этого значения в «false» приведет к отключению постоянных ссылок. Если это не было установлено в false, вы можете указать несколько элементов, таких как ‘slug’. Лучше оставить это значение по умолчанию.

    • capabilities — Определяет возможности (разрешения), необходимые для взаимодействия с таксономией, такой как удаление, добавление, назначение. Лучше всего оставить значение по умолчанию.

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

    • _builtin — Определяет, является ли этот термин «встроенной» таксономией или пользовательской таксономией. Это не должно касаться при создании вашей таксономии

Не забудьте проверить проверку кодекса WordPress для пользовательских таксономий , поскольку в нем указано, какие значения являются обязательными, а какие — необязательными (наряду с тем, какие значения являются действительными).

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

Как вы можете видеть, есть несколько опций, которые вы можете настроить таксономией в соответствии со своими требованиями.

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

В этом уроке мы собираемся создать новую таксономию « Members которую мы добавим к уже существующему типу пост-постов.

 //create a function that will attach our new 'member' taxonomy to the 'post' post type function add_member_taxonomy_to_post(){ //set the name of the taxonomy $taxonomy = 'member'; //set the post types for the taxonomy $object_type = 'post'; //populate our array of names for our taxonomy $labels = array( 'name' => 'Members', 'singular_name' => 'Member', 'search_items' => 'Search Members', 'all_items' => 'All Members', 'parent_item' => 'Parent Member', 'parent_item_colon' => 'Parent Member:', 'update_item' => 'Update Member', 'edit_item' => 'Edit Member', 'add_new_item' => 'Add New Member', 'new_item_name' => 'New Member Name', 'menu_name' => 'Member' ); //define arguments to be used $args = array( 'labels' => $labels, 'hierarchical' => true, 'show_ui' => true, 'how_in_nav_menus' => true, 'public' => true, 'show_admin_column' => true, 'query_var' => true, 'rewrite' => array('slug' => 'member') ); //call the register_taxonomy function register_taxonomy($taxonomy, $object_type, $args); } add_action('init','add_member_taxonomy_to_post'); 

Выполнение вышеуказанного кода создаст новую таксономию с именем Members и прикрепит ее к типу публикации Post . При просмотре серверной части вашего веб-сайта вы увидите новое подменю в меню « Post . Нажав на это новое подменю Members вы попадете на экран администрирования таксономии.

WordPress Taxonomies_Image 4

Экран администрирования таксономии будет выглядеть как экран category или tag зависимости от того, какой аргумент hierarchical вы установили. Наш новый member интерфейс выглядит следующим образом:

WordPress Taxonomies_Image 5

Создание новых условий

Зарегистрировав свою таксономию, вы теперь можете создавать новые условия (в нашем случае участники) для вашего сердца.

Мы создали три новых условия высшего уровня. Наши условия называются Featured Members , Standard Members и Seasonal Members .

Наши избранные и стандартные участники — это одноуровневые термины, в то время как наши сезонные участники являются многоуровневыми и имеют два дочерних термина: Winter Members и Summer Members .

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

WordPress Taxonomies_Image 6

Добавление ваших условий в ваш пост

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

WordPress Taxonomies_Image 7

Взаимодействие с вашей таксономией / условиями

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

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

Изменение файлов тем для отображения новой таксономии

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

Понимание вашего единого файла шаблона

Если вы работаете над дочерней темой (и так и должно быть), вы можете открыть файл шаблона single.php. Хотя мы не будем редактировать этот файл, важно знать, что этот файл обрабатывает вывод всех отдельных posts . Поскольку мы добавили нашу таксономию к posts , мы начнем здесь.

Ваш single.php должен выглядеть примерно так: Я использую Twenty Thirteen в качестве родительской темы, но в целом большинство файлов single.php имеют одинаковую функциональность ядра.

 <?php get_header(); ?> <div id="primary" class="content-area"> <div id="content" class="site-content" role="main"> <?php /* The loop */ ?> <?php while ( have_posts() ) : the_post(); ?> <?php get_template_part( 'content', get_post_format() ); ?> <?php twentythirteen_post_nav(); ?> <?php comments_template(); ?> <?php endwhile; ?> </div><!-- #content --> </div><!-- #primary --> <?php get_sidebar(); ?> <?php get_footer(); ?> 

Основная часть, на которой вам нужно сосредоточиться — это get_template_part('content',get_post_format()) . Эта функция — то, что на самом деле будет отображать весь ваш отдельный контент публикации, и именно здесь нам нужно будет внести наши изменения.

Понимание вашего файла шаблона содержимого

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

Первая часть get_template_part() будет принимать имя файла, который вы пытаетесь загрузить. Второй параметр (который является необязательным) будет искать конкретную версию этого файла. В качестве примера get_template_part('content','video') будет искать файл с именем ‘content-video.php’. Когда он get_template_part('content') сам по себе, например, get_template_part('content') , он ищет файл с именем ‘content.php’

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

  • Двадцать тринадцать: в двадцать тринадцать метаинформация отображается с помощью функции twentythirteen_entry_meta() . Эта функция просматривает категории / теги вашего сообщения и вызывается из файла content.php (и всех других ваших файлов содержимого, таких как content-video.php).

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

Создание функции для вывода новых терминов таксономии

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

Откройте файл functions.php и введите следующий код:

 function display_member_taxonomy_terms($post_id){ //get all terms assigned to this post $member_terms = get_the_terms($post_id,'member'); //if we have member terms assigned to this post if($member_terms){ echo '<div class="member-terms-meta">'; echo '<span class="term-title"> Member Terms: </span>'; //loop through each term foreach($member_terms as $term){ //collect term information and display it $term_name = $term->name; $term_link = get_term_link($term,'member'); echo '<a href="' . $term_link . '">'; echo '<span class="term">' . $term_name . '</span>'; echo '</a>'; } echo '</div>'; } } 

Вызов вашей новой функции внутри вашего файла содержимого

Как только вы добавили эту функцию в свой файл functions.php, откройте ваш content.php и найдите, куда выводится ваша ‘entry-meta’. Вызовите вашу новую функцию внутри этого элемента ‘entry-meta’. Я назвал нашу функцию выше стандартной мета-функции Twenty Thirteen, как описано ниже:

 <div class="entry-meta"> <?php display_member_taxonomy_terms($post->ID); ?> <?php twentythirteen_entry_meta(); ?> <?php edit_post_link( __( 'Edit', 'twentythirteen' ), '<span class="edit-link">', '' ); ?> </div><!-- .entry-meta --> 

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

WordPress Taxonomies_Image 8

Понимание того, что мы только что сделали

Чтобы отобразить ваши новые термины, мы сначала вызвали функцию display_member_taxonomy_terms($post->ID); из вашего файла content.php. Эта функция принимает идентификатор текущего сообщения и пытается показать все термины, относящиеся к нашей новой таксономии, которые были назначены этому сообщению.

Сначала мы назвали $member_terms = get_the_terms($post_id,'member'); собирать наши условия для этого поста. Функция get_the_terms($post_id,$taxonomy_name) принимает идентификатор сообщения вместе с именем таксономии и дает нам все прикрепленные термины для этой таксономии. В нашей ситуации мы передали ему наш текущий почтовый идентификатор, а также таксономию «участник».

Далее мы проверяем, есть ли у нас какие-либо результаты, используя простой оператор if($member_terms) . Если у нас есть условия для отображения, мы перебираем все наши термины, используя цикл for foreach($member_terms as $term) . Этот цикл позволяет нам перебирать каждый термин и получать доступ к его информации.

Наконец, мы получили доступ к имени термина (чтобы отобразить его пользователю), а также извлекли URL-адрес термина с помощью функции get_term_link($term_object,$taxonomy_name) . Эта функция принимает термин объект и имя таксономии и получает прямую ссылку на сам термин.

Завершение дела

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

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