Практическое создание пользовательских таксономий в WordPress 3.0
Июль 11th, 2010 | От Aleksey Davlad | Категория: CMS WORDPRESS, ХАКИПочти все наши гуру в летний период отдыхают, поэтому приходится восполнять ппробелы самому. С выходом WordPress 3.0 очень много возникает вопросов о его использовании и вообще, что же самое значимое в нем. По моему мнению это не объединение веток ( как многие пишут ), а именно то, о чем дальше пойдет речь. О упрощении возможности создания пользовательских таксономий.
Не опытные пользователи вообще со страхом воспринимают слово - таксономия. Хотя ничего страшного в этом нет.
Конечно, приведя определение из Википедии:
Таксоно́мия (гр. расположение по порядку + закон) — иерархически выстроенная система целей и результатов от простой к сложной системе. Построение таксономий задает перспективные системы тестирования различных сфер деятельности человека: когнитивную, аффективную, психомоторную и другие.
Математически таксономией является древообразная структура классификаций определенного набора объектов. Вверху этой структуры — объединяющая единая классификация — корневой таксон — которая относится ко всем объектам данной таксономии. Таксоны, находящиеся ниже корневого, являются более специфическими классификациями, которые относятся к поднаборам общего набора классифицируемых объектов. Например, в классификации организмов Карла Линнея корневым таксоном является организм. Ниже в этой таксономии находятся тип, класс, отряд, семейство, род и вид.
действительно можно не все понять.
Проще говоря - таксономия - это признак классификации, группировки, рубрикации. Стандартно в WordPress реализовано три таксономии: категории, метки ( теги ), категории ссылок. В общем, для новостного блога - этого хватало. Эксперименты по расширению возможности создания дополнительных пользовательских таксономий идут уже давно. И от версии к версии - эта возможность расширяется.
Достаточно развернутый материал из последних - есть на блоге Сони Панченко.
Так вот, именно в версии 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, создать пользовательские таксономии :
Тогда, по образцу и подобию, регистрируем их в файле 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 таксономии? К примеру XL и $500?
Любопытный вопрос. Наверное нет. Хотя, возможно я об этом пока не знаю. В этом направлении еще не копался - не тот сезон. И однозначно появятся плагины под 3.0, выполняющие эту задачу.