- Описание функции
- Примеры использования
- Получение всех терминов поста
- Получение терминов поста с определенной таксономией
- Получение терминов поста с определенными аргументами
- Получение всех терминов поста с указанием полей
- Получение терминов поста с сортировкой
- Получение терминов поста с указанием максимального количества
- Вопросы и ответы
- Как получить все термины, связанные с постом?
- Как получить только определенную таксономию для поста?
- Как получить только имена терминов, связанных с постом?
- Как получить только идентификаторы терминов, связанных с постом?
- Как получить только слаги терминов, связанных с постом?
- Как получить только количество терминов, связанных с постом?
- Как получить только родительские термины, связанные с постом?
- Как получить только дочерние термины, связанные с постом?
- Как получить только термины без дочерних элементов, связанные с постом?
- Связанные элементы
Описание функции
Функция wp_get_post_terms() используется для получения терминов (категорий или меток) для определенного поста в WordPress.
Она возвращает массив объектов WP_Term, представляющих каждый термин, или пустой массив, если термины не найдены. В случае, если указанная таксономия не существует, функция вернет объект WP_Error.
Использование
wp_get_post_terms( int $post_id, string|string[] $taxonomy = 'post_tag', array $args = array() ): array|WP_Error Функция принимает три параметра:
$post_id(необязательно) — ID поста. По умолчанию равен 0.$taxonomy(необязательно) — слаг таксономии или массив слагов таксономий, для которых нужно получить термины. По умолчанию равен ‘post_tag’.$args(необязательно) — параметры запроса терминов. См. WP_Term_Query::__construct() для поддерживаемых аргументов.
$post_id(int) — ID поста. По умолчанию 0.$taxonomy(string|string[]) — слаг таксономии или массив слагов таксономий, для которых нужно получить термины. По умолчанию ‘post_tag’.$args(array) — параметры запроса терминов. См. WP_Term_Query::__construct() для поддерживаемых аргументов.
Функция возвращает массив объектов WP_Term в случае успеха или пустой массив, если термины не найдены. Если указанная таксономия не существует, функция вернет объект WP_Error.
$post_id = 123; // ID поста
$taxonomy = 'category'; // таксономия
$args = array(
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => false,
);
$terms = wp_get_post_terms( $post_id, $taxonomy, $args );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
foreach ( $terms as $term ) {
echo $term->name; // выводим название термина
}
}
В этом примере мы получаем термины категории для поста с ID 123. Затем мы выводим название каждого термина.
Примеры использования
Получение всех терминов поста
$post_id = 123; // ID поста
$terms = wp_get_post_terms($post_id);
if (!empty($terms)) {
foreach ($terms as $term) {
// Выводим название термина
echo $term->name;
}
} else {
echo 'Термины не найдены';
}
Получение терминов поста с определенной таксономией
$post_id = 123; // ID поста
$taxonomy = 'category'; // Таксономия
$terms = wp_get_post_terms($post_id, $taxonomy);
if (!empty($terms)) {
foreach ($terms as $term) {
// Выводим название термина
echo $term->name;
}
} else {
echo 'Термины не найдены';
}
Получение терминов поста с определенными аргументами
$post_id = 123; // ID поста
$taxonomy = 'category'; // Таксономия
$args = array(
'hide_empty' => false, // Показывать все термины, включая пустые
'orderby' => 'name', // Сортировка по названию
'order' => 'ASC' // Сортировка по возрастанию
);
$terms = wp_get_post_terms($post_id, $taxonomy, $args);
if (!empty($terms)) {
foreach ($terms as $term) {
// Выводим название термина
echo $term->name;
}
} else {
echo 'Термины не найдены';
}
Получение всех терминов поста с указанием полей
$post_id = 123; // ID поста
$taxonomy = 'category'; // Таксономия
$args = array(
'fields' => 'names' // Получаем только названия терминов
);
$terms = wp_get_post_terms($post_id, $taxonomy, $args);
if (!empty($terms)) {
foreach ($terms as $term_name) {
// Выводим название термина
echo $term_name;
}
} else {
echo 'Термины не найдены';
}
Получение терминов поста с сортировкой
$post_id = 123; // ID поста
$taxonomy = 'category'; // Таксономия
$args = array(
'orderby' => 'count', // Сортировка по количеству объектов, связанных с термином
'order' => 'DESC' // Сортировка по убыванию
);
$terms = wp_get_post_terms($post_id, $taxonomy, $args);
if (!empty($terms)) {
foreach ($terms as $term) {
// Выводим название термина и количество объектов
echo $term->name . ' (' . $term->count . ')';
}
} else {
echo 'Термины не найдены';
}
Получение терминов поста с указанием максимального количества
$post_id = 123; // ID поста
$taxonomy = 'category'; // Таксономия
$args = array(
'number' => 5 // Максимальное количество терминов
);
$terms = wp_get_post_terms($post_id, $taxonomy, $args);
if (!empty($terms)) {
foreach ($terms as $term) {
// Выводим название термина
echo $term->name;
}
} else {
echo 'Термины не найдены';
}
Вопросы и ответы
Как получить все термины, связанные с постом?
Для получения всех терминов, связанных с постом, используйте функцию wp_get_post_terms(). Эта функция принимает следующие параметры:
$post_id(int, опционально) — ID поста. По умолчанию равен 0.$taxonomy(строка или массив строк, опционально) — слаг таксономии или массив слагов, для которых нужно получить термины. По умолчанию равен ‘post_tag’.$args(массив, опционально) — параметры запроса терминов. См. документацию классаWP_Term_Queryдля поддерживаемых аргументов.
Функция возвращает массив объектов WP_Term в случае успеха или пустой массив, если термины не найдены. Если таксономия $taxonomy не существует, возвращается объект WP_Error.
Пример использования:
$terms = wp_get_post_terms( $post_id, $taxonomy, $args );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
foreach ( $terms as $term ) {
echo $term->name;
}
}
Как получить только определенную таксономию для поста?
Если вам нужно получить только определенную таксономию для поста, вы можете передать второй параметр функции wp_get_post_terms() соответствующий слаг таксономии. Например, чтобы получить только термины из таксономии ‘category’, вы можете использовать следующий код:
$terms = wp_get_post_terms( $post_id, 'category' );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
foreach ( $terms as $term ) {
echo $term->name;
}
}
Как получить только имена терминов, связанных с постом?
Если вам нужно получить только имена терминов, связанных с постом, вы можете использовать параметр fields со значением ‘names’ при вызове функции wp_get_post_terms(). Например:
$terms = wp_get_post_terms( $post_id, $taxonomy, array( 'fields' => 'names' ) );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
foreach ( $terms as $term_name ) {
echo $term_name;
}
}
Как получить только идентификаторы терминов, связанных с постом?
Для получения только идентификаторов терминов, связанных с постом, можно использовать функцию wp_get_post_terms() с параметром fields установленным в значение ids. Это вернет массив идентификаторов терминов.
$post_id = 123; // ID поста
$taxonomy = 'category'; // таксономия
$terms_ids = wp_get_post_terms( $post_id, $taxonomy, array( 'fields' => 'ids' ) );
Как получить только слаги терминов, связанных с постом?
Для получения только слагов терминов, связанных с постом, можно использовать функцию wp_get_post_terms() с параметром fields установленным в значение slugs. Это вернет массив слагов терминов.
$post_id = 123; // ID поста
$taxonomy = 'category'; // таксономия
$terms_slugs = wp_get_post_terms( $post_id, $taxonomy, array( 'fields' => 'slugs' ) );
Как получить только количество терминов, связанных с постом?
Для получения только количества терминов, связанных с постом, можно использовать функцию wp_get_post_terms() с параметром count установленным в значение true. Это вернет число терминов.
$post_id = 123; // ID поста
$taxonomy = 'category'; // таксономия
$terms_count = wp_get_post_terms( $post_id, $taxonomy, array( 'count' => true ) );
Как получить только родительские термины, связанные с постом?
Для получения только родительских терминов, связанных с постом, можно использовать функцию wp_get_post_terms() с указанием параметра child_of равным 0:
$post_id = get_the_ID();
$taxonomy = 'category';
$args = array(
'child_of' => 0
);
$terms = wp_get_post_terms( $post_id, $taxonomy, $args );
foreach ( $terms as $term ) {
echo $term->name;
} Как получить только дочерние термины, связанные с постом?
Для получения только дочерних терминов, связанных с постом, можно использовать функцию wp_get_post_terms() с указанием параметра parent равным ID родительского термина:
$post_id = get_the_ID();
$taxonomy = 'category';
$args = array(
'parent' => $parent_term_id
);
$terms = wp_get_post_terms( $post_id, $taxonomy, $args );
foreach ( $terms as $term ) {
echo $term->name;
} Как получить только термины без дочерних элементов, связанные с постом?
Для получения только терминов без дочерних элементов, связанных с постом, можно использовать функцию wp_get_post_terms() с указанием параметра childless равным true:
$post_id = get_the_ID();
$taxonomy = 'category';
$args = array(
'childless' => true
);
$terms = wp_get_post_terms( $post_id, $taxonomy, $args );
foreach ( $terms as $term ) {
echo $term->name;
} Функция
wp_get_post_terms()позволяет получить термины, связанные с определенным постом в WordPress. Она предоставляет гибкую возможность фильтрации терминов по различным параметрам, таким как родительские термины, дочерние термины и термины без дочерних элементов. Это полезная функция для разработчиков WordPress, которые работают с таксономиями и хотят получить только определенные термины для своих постов.
Связанные элементы
- Функция
get_term(): возвращает объект термина по его ID. - Функция
get_terms(): возвращает массив объектов терминов, соответствующих заданным параметрам запроса. - Функция
get_term_by(): возвращает объект термина по указанному полю и значению. - Функция
get_the_terms(): возвращает массив объектов терминов, связанных с определенным постом. - Функция
has_term(): проверяет, есть ли у поста указанный термин. - Функция
is_object_in_term(): проверяет, принадлежит ли объект указанному термину. - Хук
get_terms_args: позволяет изменить аргументы запроса для функцииget_terms. - Хук
get_terms: позволяет изменить результаты запроса для функцииget_terms. - Класс
WP_Term_Query: используется для выполнения запросов к базе данных для получения терминов. - Класс
WP_Term: представляет термин, содержит свойства и методы для работы с терминами.