- get_the_category — функция для вывода категорий (рубрик) к указанному посту
- Использование
- Параметры
- Возвращает массив объектов WP_Term
- Примеры
- Выводим список рубрик со ссылками
- Выводим список рубрик к текущему посту через запятую
- Указываем ссылку только на первую рубрику, в которой находится пост
- Миша
- get_categories() │ WP 2.1.0
- Возвращает
- Шаблон использования
- Использование
- Аргументы $args
- Примеры
- #1 Список категорий и их описание
- #2 Получение только категорий верхнего уровня
- #3 Выпадающий список
- #4 Получим только категории в которых есть посты
- Заметки
- Список изменений
- Код get_categories() get categories WP 6.2.2
- Cвязанные функции
- Рубрики
- get_category() │ WP 1.5.1
- Возвращает
- Использование
- Примеры
- #1 Выведем на экран данные категории, на странице которой мы находимся (текущей):
- Список изменений
- Код get_category() get category WP 6.2.2
- Cвязанные функции
- Рубрики
get_the_category — функция для вывода категорий (рубрик) к указанному посту
Функция возвращает массив объектов (в данном случае рубрики, в которых находится пост с указанным в параметрах ID).
Короче говоря в итоге вы получаете все рубрики поста и информацию о них.
Использование
get_the_category( $post_id = false )
Параметры
$post_id
(целое) ID поста, если функция используется в цикле, этот параметр необязателен.
Возвращает массив объектов WP_Term
Как я уже говорил, функция возвращает массив объектов WP_Term , каждый из них содержит информацию об одной из рубрик, в которой находится пост.
В скобках указаны эквивалентные варианты.
- 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 объекта;
Примеры
Выводим список рубрик со ссылками
Переменной $post_id задайте своё значение, либо просто удалите её оттуда, если используете этот код внутри цикла.
Для получения URL рубрики используем функцию get_category_link().
Выводим список рубрик к текущему посту через запятую
Функция trim() нужна для удаления каких-либо символов по краям строки, в данном случае запятую с пробелом.
Указываем ссылку только на первую рубрику, в которой находится пост
К каждому объекту массива $categories можно обратиться по порядковому номеру, нумерация начинается с нуля.
Миша
Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.
Пишите, если нужна помощь с сайтом или разработка с нуля.
get_categories() │ WP 2.1.0
Получает категорий в виде массива объектов. По каким критериям получить категории и как их отсортировать указывается в параметрах функции.
Параметры передаваемые этой функции очень похожи на параметры wp_list_categories(). Они также могут быть переданы в виде массива или строки запроса: type=post&order=DESC .
Хуки из функции
Возвращает
Array ( [0] => WP_Term Object ( [term_id] => 7 [name] => Codex [slug] => codex [term_group] => 0 [term_taxonomy_id] => 7 [taxonomy] => category [description] => [parent] => 3 [count] => 17 [filter] => raw [term_order] => 1 [cat_ID] => 7 [category_count] => 17 [category_description] => [cat_name] => Codex [category_nicename] => codex [category_parent] => 3 ) [1] => WP_Term Object ( . ) . )
Шаблон использования
$categories = get_categories( [ 'taxonomy' => 'category', 'type' => 'post', 'child_of' => 0, 'parent' => '', 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => 1, 'hierarchical' => 1, 'exclude' => '', 'include' => '', 'number' => 0, 'pad_counts' => false, // полный список параметров смотрите в описании функции http://wp-kama.ru/function/get_terms ] ); if( $categories )< foreach( $categories as $cat )< // Данные в объекте $cat // $cat->term_id // $cat->name (Рубрика 1) // $cat->slug (rubrika-1) // $cat->term_group (0) // $cat->term_taxonomy_id (4) // $cat->taxonomy (category) // $cat->description (Текст описания) // $cat->parent (0) // $cat->count (14) // $cat->object_id (2743) // $cat->cat_ID (4) // $cat->category_count (14) // $cat->category_description (Текст описания) // $cat->cat_name (Рубрика 1) // $cat->category_nicename (rubrika-1) // $cat->category_parent (0) > >
Использование
$categories = get_categories( $args );
Аргументы $args
Полный список параметров смотрите в get_terms().
taxonomy(строка) Название таксономии, которую нужно обрабатывать. Добавлено с версии 3.0.
По умолчанию: ‘category’ type(строка)
Тип категорий, которые будут получены.
Сортировка полученных данных по определенным критериям. Например, по количеству постов в каждой категории или по названию категорий. Доступны следующие критерии:
- id или term_id — по ID.
- name — по названию. По умолчанию.
- count — по полю count в term_taxonomy — по количеству записей.
- slug — по альтернативному названию.
- description — по описанию.
- term_group — по группе.
- term_group — по группе.
- parent — по полю parent.
- include — по порядку указанному в параметре $include
- slug__in — с версии 4.9. В порядке указанном в параметре $slug.
- meta_value — по значению произвольного поля
- meta_value_num — по значению произвольного поля, значение будет интерпретироваться как число, а не строка.
- ключ «meta_query» — в параметре $meta_query мы можем указать параметры запроса по метаполям, и там же указать ключ для конкретного запроса. Этот ключ можно использовать как ключ для сортировки по соответствующему метаполю.
- none — не сортировать
Направление сортировки, указанной в параметре «orderby»:
- ASC — по порядку, от меньшего к большему (1, 2, 3; a, b, c);
- DESC — в обратном порядке, от большего к меньшему (3, 2, 1; c, b, a).
Получать или нет пустые категории (не имеющие записей):
hierarchical(логический) Если параметр установлен в true, то в результат будут включены пустые дочерние категории, дочерние категории которых имеют записи (непустые).
По умолчанию: true exclude(строка/массив) Исключить какие-либо категории из списка. Нужно указывать ID категорий через запятую или в массиве. Если этот параметр указан, параметр child_of будет отменен.
По умолчанию: » include(строка/массив) Вывести списком только указанные категории. Указывать нужно ID категорий через запятую или в массиве.
По умолчанию: » number(число) Лимит. Число категорий, которые будут получены. По умолчанию без ограничений — будут получены все категории. pad_counts(логический) Если передать true, то число которое показывает количество записей в родительских категориях будет суммой своих записей и записей из дочерних категорий.
По умолчанию: false
Примеры
#1 Список категорий и их описание
Этот пример покажет нам как можно вывести списком ссылки на категории, где сразу после каждой ссылки будет идти описание категории (указывается при создании/редактировании категории):
'name', 'order' => 'ASC' ] ); foreach( $categories as $category )< echo 'Category: name ) . '" ' . '>' . $category->name.'
'; echo 'Description:'. $category->description . '
'; echo 'Post Count: '. (int) $category->count . '
'; > ?>
#2 Получение только категорий верхнего уровня
Для этого, установите значение ‘parent’ => 0 . Этот пример получает ссылку и название категорий верхнего уровня.
$cats = get_categories( array( 'orderby' => 'name', 'parent' => 0 ) ); foreach ( $cats as $cat ) < printf( '%2$s
', esc_url( get_category_link( $cat->term_id ) ), esc_html( $cat->name ) ); >
#3 Выпадающий список
Для того, чтобы создать выпадающий список из категорий мы можем воспользоваться другой специальной для этой цели, функцией wp_dropdown_categories():
wp_dropdown_categories( [ 'hide_empty' => 0, 'name' => 'category_parent', 'orderby' => 'name', 'selected' => $category->parent, 'hierarchical' => true, 'show_option_none' => __('None') ] );
Однако с таким подходом мы лишимся определенной гибкости в настройке списка, так как мы получи уже полностью сформированный список.
Поэтому, в некоторых случаях будет логичнее создать выпадающий список с помощью этой функции — get_categories(). Пример (предполагается что нам нужно вывести подкатегории (дочерние) категории 10):
#4 Получим только категории в которых есть посты
По умолчанию функция get_category() возвращает ТОЛЬКО категории, в которых есть посты (не пустые категории). Это означает, что если для категории не назначен пост, то такая категория не будет получена.
Чтобы этого избежать и показать все категории независимо есть в ней посты или нет, нужно указать параметр ‘hide_empty’ => false :
$args = array( 'hide_empty' => false, ); $cats = get_categories( $args ); // вернет все категории (включая пустые)
Заметки
Список изменений
Код get_categories() get categories WP 6.2.2
function get_categories( $args = '' ) < $defaults = array( 'taxonomy' =>'category' ); $args = wp_parse_args( $args, $defaults ); /** * Filters the taxonomy used to retrieve terms when calling get_categories(). * * @since 2.7.0 * * @param string $taxonomy Taxonomy to retrieve terms from. * @param array $args An array of arguments. See get_terms(). */ $args['taxonomy'] = apply_filters( 'get_categories_taxonomy', $args['taxonomy'], $args ); // Back compat. if ( isset( $args['type'] ) && 'link' === $args['type'] ) < _deprecated_argument( __FUNCTION__, '3.0.0', sprintf( /* translators: 1: "type =>link", 2: "taxonomy => link_category" */ __( '%1$s is deprecated. Use %2$s instead.' ), 'type => link
', 'taxonomy => link_category
' ) ); $args['taxonomy'] = 'link_category'; > $categories = get_terms( $args ); if ( is_wp_error( $categories ) ) < $categories = array(); >else < $categories = (array) $categories; foreach ( array_keys( $categories ) as $k ) < _make_cat_compat( $categories[ $k ] ); >> return $categories; >
Cвязанные функции
Рубрики
- cat_is_ancestor_of()
- category_description()
- category_exists()
- get_cat_ID()
- get_cat_name()
- get_category()
- get_category_by_slug()
- get_category_link()
- get_category_parents()
- get_the_category_by_ID()
- in_category()
- single_cat_title()
- wp_create_category()
- wp_dropdown_categories()
- wp_insert_category()
- wp_list_categories()
get_category() │ WP 1.5.1
Получает данные указанной категории. Если передать в параметр $category объект содержащий информацию о категории, эти данные будут закешированны. Если передать в параметр $category ID категории, данные категории будут получены из базы данных или из кеша, если он есть.
Данные категории будут преобразованы для поддержки обратной совместимости (в массив будут встроены аналогичные параметры term).
Обратите внимание на функцию get_term(), которая идентична get_category. С её помощью можно получить данные другой, отличной от category , таксономии.
Возвращает
- Данные категории в виде который указан в параметре $output .
- WP_Error — если категория пустая.
- null — если категории не существует.
Использование
$cat = get_category( $category, $output, $filter );
$category(число) (обязательный) ID категории или объект содержащий данные о категории. $output(константа)
Каким видом массива возвращать данные:
- OBJECT — объект;
- ARRAY_A — ассоциативный массив;
- ARRAY_N — индексированный массив.
$filter(строка) Фильтр (что за фильтр я точно не понял).
По умолчанию: ‘raw’
Примеры
#1 Выведем на экран данные категории, на странице которой мы находимся (текущей):
$thisCat = get_category( get_query_var('cat') ); print_r( $thisCat );
В результате мы увидим нечто подобное:
stdClass Object ( [term_id] => 85 [name] => Category Name [slug] => category-name [term_group] => 0 [term_taxonomy_id] => 85 [taxonomy] => category [description] => [parent] => 70 [count] => 0 [cat_ID] => 85 [category_count] => 0 [category_description] => [cat_name] => Category Name [category_nicename] => category-name [category_parent] => 70 )
Список изменений
Код get_category() get category WP 6.2.2
function get_category( $category, $output = OBJECT, $filter = 'raw' ) < $category = get_term( $category, 'category', $output, $filter ); if ( is_wp_error( $category ) ) < return $category; >_make_cat_compat( $category ); return $category; >
Cвязанные функции
Рубрики
- cat_is_ancestor_of()
- category_description()
- category_exists()
- get_cat_ID()
- get_cat_name()
- get_categories()
- get_category_by_slug()
- get_category_link()
- get_category_parents()
- get_the_category_by_ID()
- in_category()
- single_cat_title()
- wp_create_category()
- wp_dropdown_categories()
- wp_insert_category()
- wp_list_categories()
Чем отличаются свойства объекта категории count и category_count , parent и category_parent ? Кусок дампа get_category() в моей теме
public 'count' => int 124 public 'category_count' => int 124