Это не дублирующийся вопрос, однако, похоже, что форум wordpress.stackexchange молчит по этому поводу ... Надеюсь, кто-то может помочь!
Следующая моя ссылка относится: Получить только соответствующую подкатегорию категории ...
Я занят сайтом c musi. Сценарий следующий:
- Песня (продукт WooCommerce), имеет категорию «Рок». Рок является подкатегорией «Жанр».
- Категория «Жанр» имеет ряд различных подкатегорий (рок, поп, классика и т. д. c).
- Эти категории были настроены при импорте продуктов в WooCommerce, и моя строка «Категории» в исходном импортируемом CSV-файле выглядит следующим образом (I ' m с использованием фиктивных данных для целей разработки):
Genre, Genre > Rock, Artist, Artist > Abigail Jay > Hulking Depend Weigh, Album > Hulking Depend Weigh, Year, Year > 2014
В приведенном выше примере рок является подкатегорией жанра.
со следующим кодом Я получаю все подкатегории, перечисленные в разделе «Жанр»:
global $product;
$terms = get_the_terms($product->get_id(), 'product_cat');
foreach($terms as $term)
{
if($term->slug == "genre")
{
$_id = $term->term_id;
$_s = $term->slug;
$_ar = array('parent' => $_id);
$assoc_categories = get_terms('product_cat', $_ar);
}
}
Однако это неверно. Что я пытаюсь сделать (и не выигрываю), так это получить соответствующую подкатегорию (например, Rock), связанную с текущим продуктом, через php. Другими словами, мне нужно посмотреть, какая подкатегория жанра связана с продуктом.
Мне, вероятно, не хватает чего-то небольшого, однако это заставляло меня довольно долго работать ... любая помощь будет очень признателен!
РЕДАКТИРОВАТЬ:
Хорошо, я придумал немного обходной способ получить то, что мне нужно, и обновил свой код следующим образом:
global $product;
$terms = get_the_terms($product->get_id(), 'product_cat');
$_x = array();
foreach($terms as $term)
{
if($term->slug == "genre")
{
$_id = $term->term_id;
$_s = $term->slug;
$_ar = array('parent' => $_id);
$assoc_categories = get_terms('product_cat', $_ar);
foreach(get_terms('product_cat', $_ar) as $_gt)
{
$genre_dict[] = $_gt->name;
}
}
if(in_array($term->name, $genre_dict))
{
echo($term->name);
}
}
Краткое объяснение вышеизложенного :
- Я создаю массив с именем
$genre_dict
, содержащий все подкатегории, содержащиеся в категории Genre. - Затем я сравниваю
$term->name
с каждой записью в $genre_dict
и, если найдено совпадение, выхожу $term->name
.
Есть ли лучший способ достичь того же результата?