Таксономия в 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=" | "]

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

<?php if (function_exists('xili_tidy_tag_cloud'))
xili_tidy_tag_cloud('tagsgroup='.single_cat_title('',false).'&tagsallgroup=color&largest=18');
?>

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

В статье 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), напишу в отдельном посте.


Комментариев: 30, оставить свой »

Страницы: « 2 [1] Показать все

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

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

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

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

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

    ps: написал тут — не нашел обратной связи или еще каких-то контактов. не в хуиз же лезть)

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

    Хорошая и обзорная статья.

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

    Может встречали плагины или хаки по этой теме, буду признателен любому ответу.

  4. # 17 sonika 29.12.2009 в 23:08

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

    Как пример www.goodwinpress.ru/?p=253

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

  5. # 16 Mixa (9) 29.12.2009 в 17:11

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

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

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

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

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

  8. # 13 Alex 25.12.2009 в 22:30

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

  9. # 12 sonika (297) 22.12.2009 в 21:28
  10. # 11 michael 22.12.2009 в 13:01

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

  11. # 10 Crampones 05.12.2009 в 02:12

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

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

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

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

    Добрый день.

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

  13. # 8 sonika 19.11.2009 в 15:22

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

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

    Вот появился еще плагин scribu.net/wordpress/quer...tiple-taxonomies

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

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

  16. # 5 Mixa (9) 26.09.2009 в 10:57

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

  17. # 4 sonika (297) 23.09.2009 в 19:41

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

  18. # 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.

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

  19. # 2 sonika (297) 23.09.2009 в 10:51

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

    <ul> <?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 '<li>'; echo '<a href="'; echo get_permalink($post_new->ID); echo '">'; echo $post_new->post_title; echo '</a></li>'; endforeach; ?> </ul>

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

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

    А не проще для этих целей использовать Custom Fields?

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

Страницы: « 2 [1] Показать все

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


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


Subscribe without commenting

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

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