Практическое создание пользовательских таксономий в WordPress 3.0

Июль 11th, 2010 | От Aleksey Davlad | Категория: CMS WORDPRESS, ХАКИ

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

Не опытные пользователи вообще со страхом воспринимают слово - таксономия. Хотя ничего страшного в этом нет.

Конечно, приведя определение из Википедии:

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

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

действительно можно не все понять.

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

Достаточно развернутый материал из последних - Таксономия в WordPress 2.8 и альтернативы есть на блоге Сони Панченко.

Так вот, именно в версии WordPress 3.0, создание пользовательских таксономий практически на 80 % реализовано в движке. Почему на 80%? Потому, что до сих пор полностью завершенного механизма административного управления этим процессом нет. Нужна работа с кодом напрямую, что согласитесь, не совсем удобно. Но все идет к тому, что механизм будет реализован по варианту Друпал.

Итак, как же создаются и используются пользотельские таксономии в WordPress 3.0. Пока даже в версии 3.0 для регистрации новой таксономии используется файл functions.php, который нужно дополнять кодом регистрации таксономии. Например, для пользовательской таксономии test, код выглядит так:

1
2
3
4
5
6
7
<?php
 
register_taxonomy('test', 'post', array(
'hierarchical' => false,  'label' => 'test',
'query_var' => true, 'rewrite' => true));
 
?>

Предположим, что у Вас есть необходимость для интернет - магазина на базе WordPress, создать пользовательские таксономии :

  • size
  • price
  • brand
  • Тогда, по образцу и подобию, регистрируем их в файле functions.php ( код ниже ):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    // Custom taxonomy for Size
    register_taxonomy('Size', 'post',  array(
    'hierarchical' => false, 'label' => 'Size',
    'query_var' =>  true, 'rewrite' => true));
     
    // Custom taxonomy for Price
    register_taxonomy('Price', 'post',  array(
    'hierarchical' => false, 'label' => 'Price',
    'query_var'  => true, 'rewrite' => true));
     
    // Custom taxonomy for Brand
    register_taxonomy('Brand', 'post',  array(
    'hierarchical' => false, 'label' => 'Brand',
    'query_var'  => true, 'rewrite' => true));

    В консоле управления созданные таксономии появятся на вкладке Записи ( показано ниже ) :

    При открытии записи для ее создания и редактирования, появляется возможность управления метками данными пользовательскими таксономиями ( скриншот ниже ):

    Первый этап создания понятен. Теперь необходимо обеспечить вывод новых пользовательских таксономий и их меток в теме WordPress. Вывод в теме осуществляется следующим кодом ( пример ):

    1
    
    <?php echo get_the_term_list($post->ID, 'people', 'People: ', ', ', ''); ?>

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

    1
    2
    3
    4
    5
    6
    7
    8
    
    <img src="ID, 'post-icon', true);  ?>" alt="Icon for Post #"  />
    <ul>
    <li><?php echo get_the_term_list($post->ID,  'Size', 'Size: ', ', ', ''); ?></li>
    <li><?php echo  get_the_term_list($post->ID, 'Price', 'Price: ', ', ', '');  ?></li>
    <li><?php echo get_the_term_list($post->ID,  'Brand', 'Brand: ', ', ', ''); ?></li>
    </ul>
     
    <?php the_content(); ?>

    Должно получиться приблизительно так:

    Это все делалось на варианте самописной темы. С дефолтной Twenty Ten чуть сложнее, так как нужно переделывать или файл index.php или файл цикла, который в ней отдельно. Но об этом - в следующем посте. И о новой дефолтной теме под 3.0 - подробно.

    Теги: , ,

    2 комментариев
    Комментарии статьи »

    1. А есть какой-то механизм, чтобы можно было выбрать сразу 2 таксономии? К примеру XL и $500?

    2. Любопытный вопрос. Наверное нет. Хотя, возможно я об этом пока не знаю. В этом направлении еще не копался - не тот сезон. И однозначно появятся плагины под 3.0, выполняющие эту задачу.

    Комментарии статьи