Статьи

Представляем WordPress 3 Пользовательские Таксономии

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


Таксономии — это разные методы классификации вещей.

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

  • Объем оперативной памяти
  • Размер жесткого диска
  • Скорость процессора
  • Тип процессора
  • Операционная система установлена
  • и так далее…

Пример категории

До версии 2.3 WordPress имел только одну общую таксономию, которая называется Категория для сообщений. Это хорошо работает для блогов, поскольку вы можете создать категорию верхнего уровня под названием «Настольные компьютеры» с подкатегорией «ОЗУ», которая может иметь подкатегории, такие как «Менее 1 ГБ», «1 ГБ», «2 ГБ». до 4 ГБ «и так далее. Вторая дочерняя категория «Настольные компьютеры» может называться «Операционная система» с такими подкатегориями, как «Windows XP», «Mac OS», «Red Hat», «Ubuntu» и т. Д.

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

Пример тегов

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

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

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

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

Полностью Иерархические Пользовательские Таксономии

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


WordPress версии 3 не позволяет создавать собственные таксономии с экрана администрирования. Чтобы изначально определить свои пользовательские таксономии без плагина, вам нужно добавить немного кода в файл functions.php вашей темы. Это не так уж сложно — просто следуйте моим указаниям.

Чтобы добавить пользовательские таксономии, нам нужно отредактировать файл «functions.php», находящийся в каталоге вашей темы. Например, я использую стандартную тему «двадцатку», которая поставляется с WordPress 3.0, а моя установка WordPress находится в каталоге с именем «wp». Мой файл functions.php находится по адресу:
[Website_root] /wp/wp-content/themes/twentyten/functions.php.


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


Во-первых, нам нужно создать одну функцию, которая создает все необходимые нам таксономии. Мы назовем функцию «build_taxonomies». Давайте добавим эту функцию в конец файла functions.php.

1
2
3
function build_taxonomies() {
    // code will go here
}

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

01
02
03
04
05
06
07
08
09
10
register_taxonomy(
    ‘internal_name’,
    ‘object_type’,
    array(
        ‘hierarchical’ => {true|false},
        ‘label’ => ‘Human Readable Name’,
        ‘query_var’ => {true|false},
        ‘rewrite’ => {true|false}
    )
);
  • internal_name: Как будет вызываться эта таксономия изнутри WordPress, в базе данных и файлах шаблонов?
  • object_type: какие типы контента можно классифицировать с помощью этой таксономии? Возможные значения: «пост, страница, ссылка», а затем имена пользовательских типов постов, которые мы научимся создавать в следующем уроке.
  • Далее идет массив необязательных параметров. Мы будем использовать самые важные из них здесь, в этом уроке, но полный список можно найти на странице Кодекс ссылки на функцию / register_taxonomy. Параметры, которые мы будем использовать:
  • Иерархический : если «true», эта таксономия имеет иерархические возможности, такие как WordPress Categories. Если ‘false’, эта таксономия ведет себя во многом как теги произвольной формы.
  • label: Это удобочитаемое имя, используемое в интерфейсе вашего сайта для обозначения таксономии.
  • query_var: Если ‘true’, мы сможем запросить в WordPress сообщения, зависящие от выбора для этой таксономии. Например, мы могли бы искать все посты, где в таксономии операционной системы выбрано «Windows».
  • rewrite: если true, WordPress будет использовать дружественные URL при просмотре страницы для этой таксономии. Например, страница со списком всех сообщений с выбранной операционной системой «Windows» будет представлена ​​следующим URL: http://domain.com/operating_system/windows

Наша запись о добавлении таксономии операционной системы выглядит так:

1
register_taxonomy( ‘operating_system’, ‘post’, array( ‘hierarchical’ => true, ‘label’ => ‘Operating System’, ‘query_var’ => true, ‘rewrite’ => true ) );

Идите дальше и добавьте это к своей функции «build_taxonomies».

«register_taxonomy» дополнительно определяется в кодексе WordPress.


Нам нужно добавить еще одну строку в файл «functions.php», чтобы наша функция «build_taxonomies» фактически выполнялась. Мы «подключим» функцию «build_taxonomies» к событию «init», добавив следующий код:

1
add_action( ‘init’, ‘build_taxonomies’, 0 );

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

1
2
3
4
5
6
// Custom Taxonomy Code
add_action( ‘init’, ‘build_taxonomies’, 0 );
 
function build_taxonomies() {
    register_taxonomy( ‘operating_system’, ‘post’, array( ‘hierarchical’ => true, ‘label’ => ‘Operating System’, ‘query_var’ => true, ‘rewrite’ => true ) );
}

Узнайте больше о add_action .


Просмотр классификаций таксономии

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

Добавление классификаций таксономии

Теперь вы можете добавлять и редактировать операционные системы точно так же, как и общие категории.


Если вы хотите добавить таксономии «RAM» и «Hard Drive», чтобы следовать примеру, просто добавьте следующее в ваш файл functions.php:

1
2
register_taxonomy( ‘ram’, ‘post’, array( ‘hierarchical’ => true, ‘label’ => ‘RAM’, ‘query_var’ => true, ‘rewrite’ => true ) );
register_taxonomy( ‘hard_drive’, ‘post’, array( ‘hierarchical’ => true, ‘label’ => ‘Hard Drive’, ‘query_var’ => true, ‘rewrite’ => true ) );

После этого измененный раздел вашего файла functions.php будет выглядеть примерно так:

1
2
3
4
5
6
7
8
// Custom Taxonomy Code
add_action( ‘init’, ‘build_taxonomies’, 0 );
 
function build_taxonomies() {
register_taxonomy( ‘operating_system’, ‘post’, array( ‘hierarchical’ => true, ‘label’ => ‘Operating System’, ‘query_var’ => true, ‘rewrite’ => true ) );
register_taxonomy( ‘ram’, ‘post’, array( ‘hierarchical’ => true, ‘label’ => ‘RAM’, ‘query_var’ => true, ‘rewrite’ => true ) );
register_taxonomy( ‘hard_drive’, ‘post’, array( ‘hierarchical’ => true, ‘label’ => ‘Hard Drive’, ‘query_var’ => true, ‘rewrite’ => true ) );
}

Создание поста с классификациями

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


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

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


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

Информация о таксономии в отдельных сообщениях

Чтобы это произошло, нам нужно отредактировать файл шаблона «single.php», который обычно вызывается для отображения отдельного сообщения. Мой файл single.php находится по адресу: [website_root] /wp/wp-content/themes/twentyten/single.php.


В файле single.php найдите строку с:

1
<div class=»entry-utility»>

Это появляется как раз перед:

1
<div id=»nav-below»>

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


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

1
2
3
4
5
6
7
8
<?php
// Let’s find out if we have taxonomy information to display
// Something to build our output in
$taxo_text = «»;
 
// Variables to store each of our possible taxonomy lists
// This one checks for an Operating System classification
$os_list = get_the_term_list( $post->ID, ‘operating_system’, ‘<strong>Operating System(s):</strong> ‘, ‘, ‘, » );

Здесь мы вызываем список функций get_the_term WordPress со следующими параметрами:

  • $ post-> ID : идентификатор текущего сообщения.
  • ‘operating_system’ : имя пользовательской таксономии, которую мы проверяем на данные. Мы спрашиваем, была ли данная публикация классифицирована в таксономии ‘operating_system’.
  • «Операционная система (ы)» : если что-то возвращается, это строка, которую мы хотели бы иметь перед ней.
  • ‘,’ : Если возвращено несколько элементов, это строка, которую мы хотели бы разделить.
  • » : Если что-то возвращается, это строка, которую мы хотели бы иметь за этим. В этом случае мы не хотим, чтобы за результатом ничего не было добавлено.

Мы сделаем то же самое для двух других таксономий, которые могут содержать данные:

1
2
$ram_list = get_the_term_list( $post->ID, ‘ram’, ‘<strong>RAM Option(s):</strong> ‘, ‘, ‘, » );
$hd_list = get_the_term_list( $post->ID, ‘hard_drive’, ‘<strong>Hard Drive Option(s):</strong> ‘, ‘, ‘, » );

Узнайте больше о «get_the_term_list.»


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

01
02
03
04
05
06
07
08
09
10
11
12
// Add OS list if this post was so tagged
if ( » != $os_list ) {
    $taxo_text .= «$os_list<br />\n»;
}
// Add RAM list if this post was so tagged
if ( » != $ram_list ) {
    $taxo_text .= «$ram_list<br />\n»;
}
// Add HD list if this post was so tagged
if ( » != $hd_list ) {
    $taxo_text .= «$hd_list<br />\n»;
}

Проверьте, привели ли вышеприведенные шаги к выводу какой-либо информации о таксономии. Если информация о таксономии существует, мы выведем ее в div класса «entry-utility».

01
02
03
04
05
06
07
08
09
10
11
12
// Output taxonomy information if there was any
// NOTE: We won’t even open a div if there’s nothing to put inside it.
if ( » != $taxo_text ) {
?>
<div class=»entry-utility»>
<?php
echo $taxo_text;
?>
</div>
<?
} // endif
?>

Посетите страницу публикации, и вы должны увидеть все пользовательские классификации таксономии, перечисленные ниже.

Информация о таксономии в отдельных сообщениях 2

Теперь наши отдельные сообщения сообщают нам, с какими пользовательскими таксономиями они были классифицированы. Когда они перечисляют пользовательскую классификацию таксономии, они также предоставляют ссылку, чтобы перечислить все должности в этой классификации. Например, если щелкнуть ссылку «Mac OS» рядом с «Операционные системы» под нашим сообщением, теоретически отобразятся все сообщения с классификацией операционной системы «Mac OS».

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

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


Откройте файл «category.php», скопируйте его содержимое и вставьте его в новый файл под названием «taxonomy.php». Сохраните файл taxonomy.php в каталоге тем. Например, мой файл таксономии.php находится по адресу:
[Website_root] /wp/wp-content/themes/twentyten/taxonomy.php.


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

Прямо под <? Php get_header (); ?>, добавьте следующую строку:

1
$term = get_term_by( ‘slug’, get_query_var( ‘term’ ), get_query_var( ‘taxonomy’ ) );

Он получает всю информацию о таксономии, вызвавшей эту страницу, и возвращает ее как объект в переменную $ term. Например, классификация «Mac OS» возвращает объект как таковой:

01
02
03
04
05
06
07
08
09
10
11
12
stdClass Object
(
    [term_id] => 13
    [name] => Mac OS
    [slug] => mac-os
    [term_group] => 0
    [term_taxonomy_id] => 22
    [taxonomy] => operating_system
    [description] =>
    [parent] => 0
    [count] => 2
)

Мы хотим изменить имя страницы, чтобы рассказать посетителям, на что они смотрят. Поскольку мы начали с шаблона category.php, мы можем взять строку, которая использовалась для печати названия категории, и немного изменить его, чтобы дать нам желаемое имя страницы и, если применимо, описание.

Измените следующую строку из category.php:

1
printf( __( ‘Category Archives: %s’, ‘twentyten’ ), ‘<span>’ . single_cat_title( », false ) . ‘

Читать следующим образом:

1
printf( __( ‘Posts classified under: %s’, ‘twentyten’ ), ‘<span>’ . $term_name . ‘

Это изменяет статический текст, начинающийся со строки, а затем вставляет имя классификации. (Примечание: для правильной локализации нам нужно было бы правильно добавить «Должности, классифицированные по:», в файл languages ​​/ fiftyten.pot. Это выходит за рамки этого урока, но помните о нарушении здесь.)

Затем добавьте следующее:

1
2
3
if (» != $term_descr ) {
echo «<p>$term_descr</p>\n»;
}

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

Страница таксономического архива

После внесения изменений в taxonomy.php, посетите одну из ваших публикаций, которым была дана пользовательская классификация таксономии. Из-за нашей более ранней работы в файле «single.php» пост должен показывать пользовательские классификации под ним. Просто нажмите на одну из этих классификаций, чтобы увидеть список таксономии на работе.


Я надеюсь, что этот учебник четко объяснил, что такое таксономии, и показал вам, как использовать их в WordPress 3 в качестве мощного организационного инструмента. Я надеюсь в скором времени предоставить учебник, объясняющий пользовательские типы сообщений WordPress, их тесную связь с пользовательскими таксономиями и способы их использования. Большое спасибо, что нашли время посетить Nettuts!