Вопрос или проблема
Итак, моя структура url/slug выглядит следующим образом: /toolkit-category/downloads/gui-kits. Внутри /downloads находятся другие дочерние категории/термины. Я пытаюсь получить других «сиблингов» gui-kits, когда нахожусь на /gui-kits. “toolkit_category” — это название моей таксономии, которая действует как категории, созданные с помощью PODS.
$queried_object = get_queried_object('term');
$tax = $queried_object->taxonomy;
$term = $queried_object->term_id;
$parent = $queried_object->parent;
$next_items = get_term_children( $term, $tax );
Вышеуказанный код не работает, ничего не возвращает?
Любая помощь приветствуется 🙂
Разобрался:
$carousel_items = get_queried_object();
$next_items = get_terms(
$carousel_items->taxonomy,
array('parent' => $carousel_items->parent,)
);
.
Ответ или решение
В контексте разработки на WordPress с использованием пользовательских таксономий, таких как "toolkit_category", часто возникает необходимость в получении списка "братьев и сестер" текущего термина. Это значит, что, находясь в категории, например, "gui-kits", вы хотите получить все термины, которые являются её сиблингами, то есть находятся на том же уровне и имеют того же родителя.
Изначально представленный код не работает по следующим причинам:
- Функция
get_term_children()
возвращает дочерние элементы, а не сиблингов. - Имеется неправильное использование функции
get_queried_object('term')
, так как уget_queried_object
нет аргументов; она автоматически возвращает текущий объект.
Вы корректно решили вопрос, применив функцию get_terms()
, которая позволяет получить термины (категории) на основании условий, указанных в массиве аргументов. Рассмотрим исправленный подход:
$carousel_items = get_queried_object();
$next_items = get_terms(
$carousel_items->taxonomy,
array('parent' => $carousel_items->parent,)
);
Этот код выполняет следующие задачи:
- Метод
get_queried_object()
получает текущий объект термина, на основании которого выполняется запрос. get_terms()
ищет термины в пределах указанной таксономии и фильтрует их по родителю, что и позволяет получить все термины-сиблинги.
Преимущества применения get_terms()
:
- Гибкость в фильтрации: вы можете добавить дополнительные параметры для сортировки или фильтрации выводимых терминов.
- Возвращает полный массив объектов терминов, включая такие данные, как имя, ссылка, описание и другие свойства.
При реализации SEO-оптимизации:
- Используйте полученные термины для создания навигации на сайте, улучшая структуру и юзабилити.
- Применяйте ссылки на страницы терминов в других частях сайта, наделяя их значением для целевого поиска.
Таким образом, использование правильных функций и подходов в WordPress позволяет выстраивать более эффективные и эргономичные приложения, что положительно сказывается на восприятии конечным пользователем.