wp_get_post_categories() — как получить все категории поста. Category wordpress get
получает информацию о категории в WordPress
Ключевая функция для работы с конкретной рубрикой, позволяет получить всю необходимую информацию о ней — достаточно лишь знать ID рубрики.
Если информации о категории не существует в кеше, тогда она достается из базы данных.
get_category( $category, $output, $filter ) |
$category(целое число|объект) (обязательное) — ID рубрики или объект, в случае использования объекта в качестве параметра данные будут закешированы.
Для того, чтобы получить само значение ID категории, вы можете использовать функцию get_query_var() (там в примерах всё расписано), ну или можете посмотреть ID в админке.
$output(строка) (необязательное) — позволяет задать формат вывода:
- OBJECT (по умолчанию) — объект;
Полный список выводимых значений (в скобках указаны эквивалентные варианты).
term_id (cat_id) – ID рубрики,name (cat_name) – название рубрики,slug (category_nicename) – ярлык категории,description (category_description) – описание категории,parent (category_parent) – ID родительской категории,count (category_count) – количество записей (постов) в рубрике,term_group – значение колонки term_group в базе данных,term_taxonomy_id – ID таксономии, у рубрик он равен 1,taxonomy – название таксономии, для рубрик – category,object_id – ID объекта;
- ARRAY_A — ассоциативный массив;
$category = get_category(5, 'ARRAY_A'); echo '<a href="' . get_category_link( $category['term_id'] ) . '">' . $category['name'] . '</a>'; - ARRAY_N — индексированный массив;
$category = get_category(5, 'ARRAY_A'); echo '<a href="' . get_category_link( $category[0] ) . '">' . $category[1] . '</a>'; |
Чтобы узнать, какой индекс соответствует каждому параметру в этом случае, можно пропустить массив через функцию print_r(), то есть print_r($category)
$filter(строка) (необязательное) позволяет пропустить выводимые значения через фильтр (это тема для отдельной статьи, когда она будет готова, тут появится ссылка).
- raw (по умолчанию) — не применять фильтры
misha.blog
get_categories() - вывод рубрик в WordPress
Удобная функция для вывода категорий в WordPress. Очень широко используется в плагинах и темах. Хотя лично я вместо неё предпочитаю get_terms().
get_categories( $args = '' ) |
Все остальные параметры переменной $args полностью идентичны параметрам массива $args функции get_terms().
Возвращаемые значения функции
Функция возвращает массив, состоящий из объектов категорий (или других таксономий), удовлетворяющих заданным критериям. Каждый из объектов содержит информацию о категории, например ID, название, ярлык, описание и т.д. Содержимое объекта я уже рассматривал тут.
Пример 1. Выводим названия всех категорий через запятую
Напоминаю, что подробное описание всех параметров есть в документации функции get_terms().
$all_categories = get_categories('fields=names'); echo implode(', ', $all_categories); // функция implode() преобразует массив в строку |
Пример 2. Выводим все категории, даже пустые, в виде ссылок через запятую
Для получения ссылки на страницу архива рубрики можно использовать функции get_category_link() или get_term_link().
$all_categories = get_categories('hide_empty=0'); $category_link_array = array(); foreach( $all_categories as $single_cat ){ $category_link_array[] = '<a href="' . get_category_link($single_cat->term_id) . '">' . $single_cat->name . '</a>'; } echo implode(',', $category_link_array); |
Пример 3. Создание выпадающего списка рубрик с автоматическим переходом на них при выборе
На момент написания этой статьи подобная навигация по рубрикам стоит у меня на блоге. На самом деле делается это совсем не трудно. Буквально одна строчка JavaScript — и всё готово.
$all_categories = get_categories(); if( $all_categories ){ // выводить пустой список в случае, если рубрик нет, ни к чему echo '<select onchange="document.location.href=this.options[this.selectedIndex].value;"><option value="">Выберите категорию</option>'; foreach( $all_categories as $single_cat ){ echo '<option value="' . get_category_link($single_cat->term_id) . '">' . $single_cat->name . '</option>'; } echo '</select>'; } |
Фильтр get_categories_taxonomy
Начиная с версии WordPress 2.7.0 параметр таксономии taxonomy можно пропустить через фильтр.
function change_taxonomy_for_get_categories($taxonomy, $args){ // $taxonomy - таксономия по умолчанию, т е либо category, либо то, что было передано в параметрах функции // $args - все параметры функции return 'post_tag'; // в качестве таксономии задали метки поста } add_filter('get_categories_taxonomy', 'change_taxonomy_for_get_categories', 20, 2); |
Если просто вставить этот фильтр в functions.php вашей темы, то функция get_categories() уже будет работать неправильно — вместо рубрик возвращать метки.
Используйте этот фильтр при необходимости и с осторожностью.
misha.blog
wp_get_post_categories() - функция WordPress
Функция возвращает список всех рубрик, присвоенных к конкретному посту. Если записи с указанным в параметрах ID не существует, возвращает пустой массив.
wp_get_post_categories( $post_id = 0, $args = array() ) |
- name — по названию рубрики (параметр установлен по умолчанию),
- count — по количеству записей в рубрике,
- slug — по ярлыку рубрики,
- term_group — по значению поля term_group,
- term_order — по значению поля term_order, обычно оно используется для установления собственного порядка рубрик вручную в админке,
- term_id — по ID рубрики;
- ASC — по возврастанию (параметр установлен по умолчанию),
- DESC — по убыванию;
- all — возвращает массив объектов, содержащих всю информацию о рубриках, более подробно про объекты рубрик написано здесь,
- all_with_object_id — такой же массив объектов, но только с добавлением значения object_id,
- ids — нумерованный массив, состоящий из ID рубрик (по умолчанию),
- names — нумерованный массив, состоящий из названий рубрик,
- slugs — нумерованный массив, состоящий из ярлыков рубрик;
Примеры
В качестве примера давайте выведем список всех рубрик поста через запятую, со ссылками разумеется. Получить ссылку на страницу архива категории нам поможет функция get_category_link(). Итак:
$post_cats = wp_get_post_categories( 1, array('fields' => 'all') ); // предположим, что ID поста = 1 $cats = ''; foreach($post_cats as $post_cat){ $cats .= '<a href="' . get_category_link( $post_cat ) . '">' . $post_cat->name . '</a>, '; } echo rtrim($cats, ', '); |
А теперь давайте посмотрим на содержимое массива объектов, который возвращается функцией в случае установки параметра fields равным all:
$post_cats = wp_get_post_categories( 1, array('fields' => 'all') ); print_r( $post_cats ); |
misha.blog