Что б получить текущую таксономию у WordPress нужно выполнить текущий код
<?php $taxonomy= get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); ?>
Переменная Taxonomy при этом будет содержать что то подобное
WP_Term Object
(
[term_id] => 11
[name] => Обувь
[slug] => vzuttya
[term_group] => 0
[term_taxonomy_id] => 11
[taxonomy] => wpsc_product_category
[description] => Обувь на все случаи жизни
[parent] => 0
[count] => 17
[filter] => raw
)
Здесь видно, что WP_Term Object это объект, по этому достать свойства можно так
echo $taxonomy->name; // отобразит имя
echo $taxonomy->slug; // отобразит slug
get_term_by( $field, $value, $taxonomy, $output, $filter );
$field
(строка) (обязательный)
Поле в БД, по которому будет производиться поиск параметра $value
, может быть:
- slug – по альтернативному названию;
- name – по названию;
- term_taxonomy_id – по идентификатору таксономии термина;
- id – по идентификатору термина.
$value
(строка/число) (обязательный) — Значение которое нужно найти.$taxonomy(строка)Название таксономии, category
, post_tag
или название произвольной таксономии.
С версии 4.4. этот параметр является не обязательным, если в $field
указано term_taxonomy_id.$output(строка)
Каким видом массива возвращать данные:
- OBJECT – объект, конвертирует в объект
WP_Term
.
- ARRAY_A – ассоциативный массив;
- ARRAY_N – индексированный массив.
По умолчанию: OBJECT
$filter
(строка)
Тип фильтрации. Одно из значений:
- raw – просто вернет значение
- edit – фильтр
esc_html()
если это поле description, и фильтр esc_attr()
если другое поле.
- db
- slug
- rss
- attribute – фильтр
esc_attr()
- js – фильтр
esc_js()
Смотрите параметр $context
у функции sanitize_term_field(). Или загляните в код функции.
По умолчанию: ‘raw’
Получает указанный элемент таксономию (термин). Данные можно получить, указав: имя, ярлык или ID элемента таксономии.
Если в поле $field
не передано ни одно из значений: ‘slug’, ‘name’, ‘term_taxonomy_id’, то термин будет получаться по ID и управление полностью передается функции get_term(), которая работает быстрее чем get_term_by()
.
Еще одно отличие этой функции от get_term()
– если термин получается не по ID, то результат будет получен на прямую из БД, а не из кэша, даже если он есть. А в get_term()
объектный кэш работает всегда. Поэтому, если есть возможность пользуйтесь лучше get_term()
или указывайте здесь в параметр $field
‘id’.
Полная информация по функции get_term_by здесь
Также рекомендую книгу для разработчиков, где все подробно расписано
WordPress для профессионалов. Разработка и дизайн сайтов