Таксономия в WordPress
Древообразная структура классификаций определенного набора объектов
Таксономия (taxonomy) — одно из понятий, появившихся еще во времена WordPress 2.3, но до сих пор вызывающее ужас из-за внутренней реализации. Вообще говоря, таксономией (с математической точки зрения) называется древообразная структура классификаций определенного набора объектов. По умолчанию WordPress пердоставляет три классификации: рубрики записей (post categories), метки записей (post tags) и рубрики ссылок (link categories). Я не случайно употребил [...]
← Вернуться к полной версии записи «Таксономия в WordPress»…
Автор: Vladimir; опубликовано в: WordPress; метки: WordPress, таксономияСен
2008
Комментарии к статье «Таксономия в WordPress» (19) »
Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.
Оставить комментарий к записи «Таксономия в WordPress»
गते गते पारगते पारसंगते बोधि स्वाहा
Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.


[...] что связано с таксономией, авторами, датой и временем (в эту группу относятся [...]
[...] Технически проблема заключается в том, что WordPress не обновляет поле count таблицы таксономий термов. [...]
[...] реализация управления таксономиями в WordPress — это просто кошмар какой-то. Мало того, что код [...]
да, чет сложно это у вас както. упростили бы половину.
Здравствуйте, Владимир.
Спасибо за полезный материал.
Взгляните, пожалуйста, на сайт
http://ferrum.spb.ruНе правильно работают метки.
Может быть что-то с get_tag_link?
Очень жду Ваших комментариев.
Спасибо
Оксана,
get_tag_link()нормально отрабатывает, так как ссылки генерируются корректные (http://ferrum.spb.ru/tag/prodvizhenie-sajtov/),а проблема в том, что выдаётся не то, что надо.Вариантов несколько:
category.phpвtag.php, так как, судя по всему, у Вас для отображения тэгов берётся шаблонindex.php, а в нёмThe Loopотсутствует).Лично я склоняюсь к третьему варианту.
Благодарю.
Действительно, третий вариант.
Все работает.
Разбираюсь с таксономией, не могу сообразить как сделать такое:
адрес /tag/music
узнать какие категории ипользуют посты с этим тегом
сгрппировать посты по категориям и вывести на /tag/music
что то с этой таксономией не пойму как запрос составить. Спасибо
Ну если решать задачу средствами MySQL, то так:
FROM wp_term_taxonomy AS tt
INNER JOIN wp_terms AS t USING(term_id)
INNER JOIN wp_term_relationships AS tr USING(term_taxonomy_id)
WHERE
tt.taxonomy = 'category'
AND tr.object_id IN (
SELECT DISTINCT object_id
FROM wp_term_taxonomy AS tt
INNER JOIN wp_terms AS t USING(term_id)
INNER JOIN wp_term_relationships AS tr USING(term_taxonomy_id)
WHERE
tt.taxonomy = 'post_tag'
AND t.slug = 'music'
)
GROUP BY tr.object_id
ORDER BY NULL
t.term_id— ID категории;t.name— имя категории;t.slug— slug категории;tr.object_id— ID записи из таблицыwp_posts.вот спасибо, я сделал уже так:
в файле archive.php в loop собираю все посты в массив, группирую как нужно, и вывожу каждую группу через loop
ps. забыл сказать, если пост идет в подкатегории, нужно поместить его в группу top-level этой категориии, наверно одним mysql все равно такое не решить
Не могу сделать универсальный код чтобы wordpress выдавал количество постов в рубрике (/category/рубрика), в таге (/tag/метка) и поиске (/?s=слово).
За основу брал вот такой код:
SELECT COUNT(*)
FROM $wpdb->posts
INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id)
INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE
$wpdb->term_taxonomy.taxonomy = 'category'
AND $wpdb->term_taxonomy.term_id = '$cat'
AND post_type = 'post'
AND post_status = 'publish'
");
он только выводит количество записей в рубрике, а по остальным показателям выдает 0.
<?php global $wp_query; echo $wp_query->found_posts; ?>Ваш запрос работает исключительно с категориями — Вы сами прописали условие
$wpdb->term_taxonomy.taxonomy = 'category'Александр, я Вам отправил письмо по поводу меток в WordPress. Если Вы его не получили, отпишитесь, пожалуйста.
Владимир, большое спасибо! Я письмо получил, но еще не попробовал. На следующей неделе поэкспериментирую.
Владимир При нажаитии на «Выберите из наиболее популярных меток..» появляется надпись «Неверная таксономия» (скриншот
http://floomby.ru/content/hbB9zqamKE/) WP 2.9.1 в чём проблема? на этом же хостинге есть еще один блог версия вордпреса таже, там всё работает. Дело не в теме, менял на дефолтную, проблема сохранилась. Помогите где искать, хотя быАбсолютно без понятия. Попробуйте отключить все плагины и попробовать на голом WordPress. Если получится — проблема в каком-то плагине. Если нет, то тогда нужно смотреть на запросы, которые идут на сервер.
Проблема в том что на обоих блогах стоят абсолютно идентичные плагины. Хотя сейчас попробую отключить все и посмотреть запросы
Кстати не подскажите какой скрипт отвечает за метки?
wp-includes/taxonomy.php