Получить термины-сиблинги текущей дочерней таксономии

Вопрос или проблема

Итак, моя структура 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", вы хотите получить все термины, которые являются её сиблингами, то есть находятся на том же уровне и имеют того же родителя.

Изначально представленный код не работает по следующим причинам:

  1. Функция get_term_children() возвращает дочерние элементы, а не сиблингов.
  2. Имеется неправильное использование функции 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 позволяет выстраивать более эффективные и эргономичные приложения, что положительно сказывается на восприятии конечным пользователем.

Оцените материал
Добавить комментарий

Капча загружается...