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


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

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

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

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

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

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

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

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

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

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

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

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

  6. # 42 Yeva 15.07.2011 в 20:16

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

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

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

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


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


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

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

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