Описание get_object_terms
— Filter
Хук get_object_terms позволяет изменять массив терминов, связанных с определенным объектом, перед его возвратом. Он срабатывает при запросе терминов для объекта, например, поста или товара, и позволяет изменить, добавить или удалить термины из результата
Примеры использования
Пример удаления определенного термина из массива терминов:
add_filter('get_object_terms', function($terms, $object_id, $taxonomy) {
if ($taxonomy === 'category') {
foreach ($terms as $key => $term) {
if ($term->slug === 'uncategorized') {
unset($terms[$key]);
}
}
}
return $terms;
});
В этом примере мы удаляем термин ‘uncategorized’ из списка категорий для объекта
Пример добавления нового термина в массив терминов:
add_filter('get_object_terms', function($terms, $object_id, $taxonomy) {
if ($taxonomy === 'post_tag') {
$terms[] = (object) ['term_id' => 123, 'name' => 'Новый тег', 'slug' => 'novyj-teg'];
}
return $terms;
});
Здесь мы добавляем новый тег с ID 123 в массив тегов для объекта
Пример изменения параметров аргументов перед запросом терминов:
add_filter('get_object_terms', function($terms, $object_id, $taxonomy, $args) {
if ($taxonomy === 'category') {
$args['orderby'] = 'name';
$args['order'] = 'ASC';
}
return $terms;
});
Мы изменяем порядок сортировки терминов категории на по имени в порядке возрастания
— Лучшие практики
– Использование
Используйте этот хук, когда необходимо изменить список терминов для объекта перед его выводом
– Производительность
Будьте осторожны с большими массивами терминов, так как это может влиять на производительность
– Предупреждения
Убедитесь, что изменения не нарушают логику работы таксономий на сайте
Альтернативы
Тип: filter
Этот хук используется для изменения результата запроса терминов, а не для терминов объекта
Используйте его, если нужно изменить параметры запроса терминов напрямую