Таксономия в WordPress 2.8 и альтернативы

[ ←Вернуться к стандартному виду ]

Печатная версия

Сначала просто хотела перевести статью про Custom Taxonomies, но почитав и опробовав, слегка разочаровалась. Добавить свою таксономию в WordPress 2.8 оказалось очень легко, но наворотить посредством кастомных таксономий что-либо сложное не получается, т.к. основная задача у меня на данный момент — создать сайт, записи которого можно группировать и так и сяк, не только по меткам и рубрикам.

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

  • Цвет (зеленый, красный, голубой и т.д.)
  • Размер (маленький, большой, средний)
  • Форма (треугольник, квадрат, овал и т.д.)

Задача: без излишних «некрасивых» телодвижений выводить записи с разными признаками:

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

Используем метки (теги)

Все это довольно легко организовать с помощью меток (тегов), но не очень удобно при написании записи и выводе постов: метки в записи заполняются «сплошным» вводом в бокс «Метки» без всякой разбивки по группам (признакам): зеленый, большой размер, треугольник. А если вы используете метки для чего-то ещё, то получается каша-мала. А посты можно выводит таким образом:

при включенном ЧПУ, где zelenyi, kvadrat — это слаги соответствующих меток:

http://site.ru/tag/zelenyi+kvadrat/ — все посты, в которых есть обе метки: зеленый и квадрат

http://site.ru/tag/zelenyi,kvadrat/ — все посты, в которых хотя бы одна метка: зеленый или квадрат

при ЧПУ по-умолчанию урлы будут такими:

http://site.ru/?tag=zelenyi+kvadrat — все посты, в которых есть обе метки: зеленый и квадрат

http://site.ru/?tag=zelenyi,kvadrat — все посты, в которых хотя бы одна метка: зеленый или квадрат

Почти радужно, если не считать того, что ссылки в файлы Темы прийдется вписывать вручную:

<a href="http://site.ru/?tag=zelenyi+kvadrat">Зеленые квадраты</a>

А вот если используются еще и рубрики, то вывести все посты «Зеленые квадраты», принадлежащие определенной рубрике не получится. Был для этого плагин TDO Tag Fixed (совместимость заявлена до 2.5, на 2.8.х я его не пробовала).

Используем метки + плагин xili-tidy-tags

Схема такая же, как и описанная выше + мы имеем возможность вывести несколько облаков меток, сгуппированных по признакам.

Т.е задача плагина xili-tidy-tags — помочь сгруппировать метки в группы. Плагин позволяет вывести виджетом облако меткок определенной группы меток или двух определенных групп. Группы меток можно «вкладывать» одну в другую (глубина, правда, всего 1 уровень: parent & child). Неудобство в том, что каждую метку нужно привязать к группе вручную.

Что получилось:

плагин xili-tidy-tags

плагин xili-tidy-tags

Кстати, хороший способ разделить метки на группы «русские» и «английские» для мультиязычных блогов, xili-tidy-tags хорошо совместим с плагином xili-language, подробности тут (англ.)

Есть шоткоды, котоыми можно вывести облако группы меток прямо в пост:

[xili-tidy-tags params="tagsgroup=color&largest=10&smallest=10" glue=" | "]

или так (без виджета):


Пользовательские таксономии

В статье Custom Taxonomies in WordPress 2.8 рассматривается процесс создания таксономии без плагина. Отличный подробный туториал с картинками. К сожалению, таксономия получается слишком «простой» :( Ни тебе иерархии, ни группировки записей по нескольким терминам. Зато в админ. панели все красиво:

simple taxonomies

custom taxonomies

Для создания такой таксономии добавляем в functions.php (в папке Темы):

add_action( 'init', 'create_my_taxonomies', 0 );
function create_my_taxonomies() {
register_taxonomy( 'color', 'post', array( 'hierarchical' => false, 'label' => 'Цвет', 'query_var' => true, 'rewrite' => true ) );
register_taxonomy( 'size', 'post', array( 'hierarchical' => false, 'label' => 'Размер', 'query_var' => true, 'rewrite' => true ) );
register_taxonomy( 'forma', 'post', array( 'hierarchical' => false, 'label' => 'Форма', 'query_var' => true, 'rewrite' => true ) );
}

Для использования такой таксономии нужно включить ЧПУ (шаблон любой), если ЧПУ у вас по умолчанию, то заменить в приведенном выше коде 'rewrite' => true на 'rewrite' => false

Ссылки на посты с термином Цвет » зеленый : http://site.ru/color/zelenyi/

Ссылки на посты с термином Размер » большой : http://site.ru/size/bolshoi/

Слаги (короткие ссылки) терминов можно редактировать таким же образом, как и обычные метки. Но лучше сразу поставить плагин rus-to-lat, чтобы слаги транслитировались при создании термина.

Что нам все это дает?

Вывод в записи терминов (цвета), которыми помечена запись:

<?php echo get_the_term_list( $post->ID, 'color', 'Цвета: ', ', ', '' ); ?>

выводим облако с о списком форм:

<?php wp_tag_cloud( array( 'taxonomy' => 'size', 'number' => 45 ) ); ?>

Выводим записи с «зеленым» цветом:

<?php query_posts( array( 'color' => 'zelenyi', 'showposts' => 10 ) ); ?>

Создаем специальный шаблон taxonomy.php который будет использован ВордПрессом при просмотре термина (например по ссылке http://site.ru/color/zelenyi/)

Отображение названия термина: <?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); echo $term->name; ?>

Показываем описание термина: <?php echo term_description( '', get_query_var( 'taxonomy' ) ); ?>

Чтобы в описании термина можно было использовать форматирование functions.php Темы дописываем:

remove_filter( 'pre_term_description', 'wp_filter_kses' );

Скудно, но для определенных целей пригодится, например автор статьи «Custom Taxonomies in WordPress 2.8» приводит в пример сайт с обзором фильмов, активно использующего пользовательскую таксономию: http://popcritics.com/movies/. А тут довольно подробно рассматривается процесс создания этого сайта: «Using custom taxonomies to create a movie database».

Для нелюбящих копаться в коде есть плагин Simple Taxonomies.

Вспомогательный плагин GD Taxonomies Tools

Плагин отображает все имеющиеся у вас таксономии, добавляет урлы таксономий в /xml карту сайта (должен быть установлен плагин XML Sitemap Generator), удаляет термины если таксономия удалена (настраивается), а также позволяет использовать виджеты, с помощью которых выводятся термины из всех типов таксономий, на выбор: пользовательские (созданные вами), рубрики, метки и рубрики ссылок.

gd-taxonomies-tools

Виджет gdTT Terms Cloud

виджет gdtt terms cloud

виджет gdtt terms cloud

Остается ждать, когда же custom taxonomies станут hierarchical и/или их можно будет «скрещивать» :(

Нашла ещё интересный способ группировки записей с использованием custom fields (плагин Custom Field Taxonomies), напишу в отдельном посте.


Оставить комментарий »

  1. # Владимир Лапшин (2) 23.09.2009 в 08:23

    А не проще для этих целей использовать Custom Fields?
    Хотя сам сейчас тоже думаю о сайте-каталоге, где должна присутствовать выборка по массе параметров, и постепенно начинаю более пристально смотреть в сторону Drupal, Joomla и т.д., ибо WP все-таки для этого не очень предназначен.

  2. # sonika (300) 23.09.2009 в 10:51

    Владимир, а как группировать-то посты по нескольким ключам и значениям custom field? Можно в get_posts или query_posts задать вывод постов с определенным ключем и значением, но только одним ключем и одним значением. Чтобы сделать выборку по 2 ключам, прийдется еще проверку в цикле делать, вот пример (Ю.Б. в прошлом году мне с ним помог):

      < ?php $posts_new = get_posts('meta_key=год&meta_value=2009'); foreach ($posts_new as $post_new) : if (get_post_meta($post_new->ID,'актуально',true) == 'false' ) continue;
      echo '
    • ';
      echo '';
      echo $post_new->post_title;
      echo '
    • ';
      endforeach;
      ?>


    Разве что плагин Custom Field Taxonomies потестить, я на него вчера наткнулась только, вот он, кажется, может помочь фильтровать посты по разным ключам и значениям, судя по ридми.

  3. # Владимир Лапшин (2) 23.09.2009 в 11:12

    Вообще, когда разбирался, мне наиболее интересным с точки зрения функционала показался плагин "Pods CMS":

    Pods is a CMS framework for WordPress. It's a plugin that sits on top of WordPress, allowing you to add and display your own content types.
    These content types, or "pods", are totally separate from Posts, Pages, or Custom Fields. The Pods plugin uses its own database structure for maximum efficiency, and for relationships among items.

    Но до конца я с ним так и не разобрался.

  4. # sonika (300) 23.09.2009 в 19:41

    Покопалась сегодня в Pods CMS... примеров мало, документация какая-то скудная. Пока на youtube видео туториал не нашла, не знала с какой стороны подобраться. Может это поверхностный вывод, надо глубже вникнуть. Вордпресс мне при первом знакомстве вообще убогим показался -- судила по теме default :)))

  5. # Mixa (13) 26.09.2009 в 10:57

    Наконец-то хоть на что-то спромоглись! Давно ждал именно этого функционала, хотя, в данный момент он уже и не нужен мне, так как все решилось заказыванием программинга у Макса (который maxsite) :)

  6. # Борис 07.10.2009 в 10:55

    Комментарий :)

  7. # Vlad Ossipov (5) 18.11.2009 в 16:27

    Вот появился еще плагин http://scribu.net/wordpress/query-multiple-taxonomies

  8. # sonika 19.11.2009 в 15:22

    Vlad, спасибо за ссылку, интересный плагин!

  9. # alexpts (1) 25.11.2009 в 22:25

    Добрый день.
    Соника, можешь скинуть мне пароль на mywordpress . ru / support/ ?Там что-то скрипт "забыли пароль" не присылает на почту письмо ((... не могу на форум зайти.

  10. # Crampones 05.12.2009 в 02:12

    Почти радужно, если не считать того, что ссылки в файлы Темы прийдется вписывать вручную:

    Зеленые квадраты

    Я установила xili-tidy-tags, теперь задача из двух групп меток выбирать посты по двум параметрам. насколько я поняла, теперь нужно прописывать вручную ссылки, но куда, в какие файлы?

  11. # michael 22.12.2009 в 13:01

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

  12. # sonika (300) 22.12.2009 в 21:28
  13. # Alex 25.12.2009 в 22:30

    Подскажите пожалуйста, как сделать чтобы метки в админке не были скрыты под ссылкой "Выбрать из списка меток" , а сразу при написании новости все метки были видны в панели ?

  14. # Andrey (1) 27.12.2009 в 21:30

    Спасибо за статью, пойду перенастраивать свой вордпрес =)

  15. # Денис 28.12.2009 в 16:05

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

  16. # Mixa (13) 29.12.2009 в 17:11

    Есть ли способ получить записи с опредеденным тегом за кокретный период (год) ?

  17. # sonika 29.12.2009 в 23:08

    Денис, думаю можно. Посмотрите как пример любую Тему с настройками из админки, такие Темы русифицированные ищите на wpbot.ru (у него же кстати можно заказать такие настройки для вашей Темы) или погуглите wordpress theme options
    Как пример http://www.goodwinpress.ru/?p=253

    Mixa, не знаю, может быть через query_posts codex.wordpress.org/Template_Tags/query_posts

  18. # begenote (1) 16.01.2010 в 11:15

    Хорошая и обзорная статья.
    Возможно я не совсем по адресу, но вопрос близок к теме. Мне достаточно рубрик, т.е. сама по себе таксономия не нужна, рубрики выводятся в нескольких местах в шаблоне, но в админке wp очень не удобное управление рубриками (имеется ввиду виджет при редактировании поста) если создать рубрики с подрубриками, то при создании новой записи чекбоксы проставить гораздо удобнее, чем метки, но при повторном редактировании дочерние рубрики в виджете сливаются с родительскими и получается каша... Есть ли какие-нибудь хаки, чтобы разбить рубрики вот так: http://img407.imageshack.us/img407/6743/pseudotaxonomies.jpg
    Может встречали плагины или хаки по этой теме, буду признателен любому ответу.

  19. # Tagirov (1) 21.01.2010 в 09:33

    >>Не пишите мне на емейл, очень занята, обращайтесь к lecactus.ru по поводу всяких платных доработок в WordPress
    Уважаемая Соника, товарищ Кактус сделал один проект, а потом как сквозь землю провалился (почти месяц не выходит на связь). Можете посоветовать кого-нибудь другого? Заранее огромное спасибо.)
    ps: написал тут - не нашел обратной связи или еще каких-то контактов. не в хуиз же лезть)

  20. # Михаил (1) 30.01.2010 в 13:00

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

  21. # Олег (2) 08.02.2010 в 18:01

    Уважаемая sonika... как в плагине xili-tidy-tags, в пост вывести метку, с определённой группы меток, которая преналдежит к этому посту...
    Пример: - группа меток city к ней принадлежат метки kiev, moskva, minsk.. Есть пост на который назначена метка только kiev... и внизу поста надо чтоб выводило не все метки а только метку kiev группы city...

  22. # Олег (2) 20.02.2010 в 15:38

    Извиняюсь... ступил :) уже разобрался...

  23. # Ильшат (1) 05.03.2010 в 03:43

    спасибо за подборку, попробовал Custom Taxonomy. очень неудобно, что при мере печати тега в админке, существующие не "всплывают". не знаете, можно это как-то сделать? в плагинах тоже так не делается?

  24. # gers 05.03.2010 в 20:50

    Привет. Спасибо за тему.

  25. # Иван Иванович (1) 09.03.2010 в 14:11

    Шаг 3. Для того, чтобы поместить своё лицо на фоне бэкграунда, необходимо обрезать чёрный фон фотографии. Но, чтобы после обрезания удалённая область изображения была прозрачной, кликаем правой клавишей на слое «Face» и выбираем позицию «Добавить альфа-канал».

  26. # Петр Петрович (1) 09.03.2010 в 14:15

    Шаг 4. Теперь приступим к обрезке изображения. Для этого активируем инструмент «Свободное выделение» и действуем. Выделяем не саму фигуру, а фон, который нужно удалить. Теперь имеем изображение лица без ненужного заднего фона:

  27. # Человек (1) 09.03.2010 в 14:23

    Шаг 2. Теперь нам необходим бекграунд. У каждого своё представление, как выглядит ад, но я ограничилась предложенным гуглом вариантом. На запрос «fire wallpaper» он выдал подходящее изображение:

  28. # Валерий (1) 08.04.2010 в 22:13

    поставил он мне понравился спасиб да еще и бесплатно

  29. # Seoneter (1) 26.05.2010 в 14:05

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

  30. # AndruX (1) 29.07.2010 в 23:57

    Возможно еще кому то пригодится
    http://wordpress.org/extend/plugins/query-multiple-taxonomies/

  31. # wertyuiop 14.10.2010 в 22:29

    Мне очень помогла пользовательская таксономия: Custom Taxonomies in WordPress 2.8
    Проверено работает в WordPress 2.9
    Сейчас делаю уже второй  магазин на WordPress - очень помог ваш пост. Таксономия - это вещь!

  32. # Mixa (13) 18.01.2011 в 23:29

    Создал тип поста, скажем, Книги. Потом создал к этому типу записей таксонию Жанры. Тепрь вот смотрю на картинку с иерархией шаблонов и не могу понять, как добиться, чтобы выводить одним шаблоном
    а) все записи это типа поста
    б) все записи по каждому из term'ов таксономии Жанр
    в) сингл-пост, который является Книгоой и/или отнесенный к одному из  term'ов таксоними Жанр
    Т.е. задача - не плодить кучу шаблонов (для кастомных постов, для таксономии, для сингл-поста, помеченного таксономией и/или являющемся постом определенного типа), чтобы не подцеплялись другие наявный шаблоны типа index.php

  33. # Mixa (13) 19.01.2011 в 18:55

    Sonika, не подскажете...
    Почему по запросу http://site.ru/taxonomy/term и http://site.ru/post-type/postname работают, а вот http://site.ru/taxonomy и http://site.ru/post-type/ выдают 404 страницу. Я уже и структуру пермалинков обновлял, и все такое - не помогает!
    И еще есть темка. Slug некоторых терминов подхватываются как часть адреса поста, соответственно открывается не страница с записями термина, а пост, в адресе которого есть те же буквы ))) Сделал такой хак - 'rewrite' => array('slug' => 'tax/termname' и для терминов сработало, но для списка всех постов таксономии опять-таки, возвращает пост...
    Как быть? Чем лечить?

  34. # Вадим 31.01.2011 в 01:23

    Я так понял, с помощью этого плагина http://wordpress.org/extend/plugins/query-multiple-taxonomies/ можно будет делать выборку по нескольким классификациям?

  35. # Cvety (1) 18.02.2011 в 16:12

    Здравствуйте!
    Спасибо за информацию о плагине xili-tidy-tags
    Здесь задавался вопрос, но человек сам разобрался, а я не могу - не хватает знаний.
    Мне не разобраться с шоткодом для вывода меток в запись.
    У меня есть 5 групп меток: требование к почве, к влаге, к освещенности, к уходу и тип вегетации: k-uhodu k-vlage k-pochve k-osveshhennosti tip-vegetatsii
    В каждой группе 2 - 4 метки
    Как мне составить шоткод для записей так, чтобы в каждой выводилось по одной метке, относящейся к каждой группе имеющих отношение только к этой записи.
    А на отдельной странице хотелось бы вывести отдельно полный список меток для каждой группы.
    Ghie прощения, если задаю глупые вопросы, но в интернете очень мало информации по этому плагину, и самой мне никак не разобраться :(

  36. # Тимур 02.03.2011 в 15:39

    Подскажите пожалуйста XML Sitemap Generator и Google XML Sitemap Generator это один и тот же плагин?

  37. # Тимур 02.03.2011 в 21:32

    Уважаемая Соника, подскажите пожалуйста как вывести таксономии и их рубрики в html карту сайта?Я весь инет перелопатил ничего не нашел

  38. # OZ 12.04.2011 в 13:33

    При создании пользовательских таксономий и влюченном ЧПУ, на сайте не возможно создать страницы, они отдают 404. Есть ли выход из этой ситуации? Спасибо.

  39. # Риддерский бомж (1) 22.05.2011 в 14:59

    Уважаемая Соника, помогите решить проблему, связанную с сортировкой меток.
    При установке сортировки в облаке тегов по алфавиту orderby=name&order=ASC правильно сортируются только теги на английском, а русские - примерно в таком порядке: А К М Н О П Б В Г Д Е Ж З И Л Т С У Р.
    Я понимаю, что дело тут в том, что русские символы представляются в виде кода.
    Можно ли это как то исправить?

  40. # Владислав Осипов (5) 23.06.2011 в 17:40

    Наконец-то разобрался в таксономиях этих! Спасибо Sonika.

  41. # Yeva 15.07.2011 в 10:53

    Здравствуйте, София!
    За несколько лет существования этой статьи многократно она меня выручала (за что огромное вам спасибо!), однако сейчас столкнулась с совершенно мистическим на мой взгляд глюком:
    WP 3.2, GD Taxonomies Tools
    на сайте есть 2 пользовательских  типа постов и 2 иерархических пользовательских таксономии. За каждым типом постов закреплена своя таксономия.
    Первые (созданные раньше) тип и таксономия ведут себя адекватно, а вот вторые (и все последующие) не желают выводиться через query_posts или get_posts, при том что параметр Query Variable стоит в них как true.
    т.е. на странице таксономии записи выводятся стандартным лупом, а при добавлении query_posts или get_posts выводится перестают - мне же необходимо вывести их с возможностью сортировки "на лету" (http://poligrafsnab.com/catalogue/bumaga/bumaga-v-rolyah/bumaga-ofsetnaya-v-rolyah/) - здесь работает, а здесь http://poligrafsnab.com/uslugi_typografij/flatovka/ выводится без query (
     
     

  42. # Yeva 15.07.2011 в 20:16

    Дополнение к предыдущему комментарию (можете оба удалить, так как проблема решилась) - удалось вывести посты через query_posts с добавлением query_string в аргументы - по сути получилось всё тоже самое, но почему-то по-другому не работает.
     

  43. # Руслан (1) 01.11.2011 в 09:56

    А как вообще заставить теги созданной таксономии работать? У меня они выводятся, но не работают, а файла tags.php в шаблоне нет вообще...

  44. # Ирина (1) 09.11.2011 в 15:58

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

  45. # Оксана (2) 30.11.2011 в 20:54

    Здравствуйте, подскажите пож. почему не работают теги?

  46. # Оксана (2) 30.11.2011 в 20:56

    ещё нужен совет, как изменить порядок страниц?
     

  47. # Надежда 26.12.2013 в 14:43

    Спасибо за материал.
    Вопрос - можно ли как то сделать с помощью таксономии вывод списка отдельно каждой категории товара (чекбоксы с иерархией) по основному из виджетов?

Подписаться на фид.
RSS комментариев к этой записи. | TrackBack URI

Написать комментарий


Все саттелиты — в топку! Даже не сомневайтесь. Для вопросов о вордпресс не по теме поста есть два русскоязычных форума по wordpress.


Warning: Illegal string offset 'solo_subscribe' in /var/www/sonika/data/www/sonika.ru/blog/wp-content/plugins/subscribe-to-comments.php on line 304

Подписаться, не комментируя

[ ←Вернуться к стандартному виду ]

Печатная версия