У меня есть иерархическая таксономия, называемая «географические местоположения». Он содержит континенты на первом уровне, а затем страны для каждого. Пример :
Europe
- Ireland
- Spain
- Sweden
Asia
- Laos
- Thailand
- Vietnam
и т.п.
Используя get_terms () мне удалось вывести полный список терминов, но континенты перепутаны со странами в одном большом плоском списке.
Как вывести иерархический список, как указано выше?
taxonomy
list
terms
hierarchical
mike23
источник
источник
Ответы:
Используйте
wp_list_categories
с'taxonomy' => 'taxonomy'
аргументом, он построен для создания иерархических списков категорий, но также будет поддерживать использование пользовательской таксономии.Пример кодекса:
отображение терминов в пользовательской таксономии
Если список снова выглядит плоским, возможно, вам просто нужно немного CSS, чтобы добавить отступы в списки, чтобы вы могли увидеть их иерархическую структуру.
источник
Я понимаю, что это очень старый вопрос, но если вам нужно создать реальную структуру терминов, это может быть полезным для вас способом:
Использование заключается в следующем:
источник
$into[$cat->term_id] = $cat;
на$into[] = $cat;
наличие идентификатора термина, так как ключ массива раздражает (вы не можете легко получить первый элемент, используя клавишу 0) и бесполезно (вы уже храните$cat
объект, и вы можете получить идентификатор используяterm_id
собственность.Я не знаю ни одной функции, которая делает то, что вы хотите, но вы можете создать что-то вроде этого:
Я не проверял это, но вы можете видеть, к чему я клоню. То, что приведенный выше код будет делать, это дать вам только два уровня
РЕДАКТИРОВАТЬ: ах да, вы можете использовать wp_list_categories (), чтобы делать то, что вы после.
источник
wp_list_categories()
чтобы добавить в ваши параметры GET. Или даже лучше построить фильтр для функции, чтобы добавить нужные биты. Не спрашивай меня, как ты это делаешь, так как я пока не смог разобраться в этом :(wp_list_categories
если вы хотите большего контроля над выходом, это сделает ваш код более многократного использования ..Вы можете использовать wp_list_categories () с аргументом таксономии.
источник
Поскольку я искал то же самое, но чтобы получить условия одного поста, я наконец скомпилировал это, и это работает для меня.
Что он делает:
• получает все термины названия таксономии для определенного поста.
• для иерархической таксономии с двумя уровнями (например, уровень 1: «страна» и уровень 2: «города») создается h4 с уровнем 1, за которым следует список ul уровня 2 и это для всех элементов уровня 1.
• если таксономия не является иерархической, она создаст только список ul всех элементов. вот код (я пишу его для себя, поэтому я старался быть как можно более универсальным, но ...):
Итак, наконец, вы вызываете функцию с этим (очевидно, вы заменяете my_taxonomy на ваш):
finishingLister('my_taxonomy');
Я не притворяюсь, что это идеально, но, как я уже сказал, это работает для меня.
источник
Следующий код создаст раскрывающийся список с терминами, но также может сгенерировать любой другой элемент / структуру, отредактировав переменную $ outputTemplate и отредактировав строки str_replace:
источник
У меня была эта проблема, и ни один из ответов здесь не работал для меня, по той или иной причине.
Вот моя обновленная и рабочая версия.
И использование:
источник
Я использовал код @popsi, который работал очень хорошо, и я сделал его более эффективным и легким для чтения:
Использование :
источник
Будьте уверены, что
hierarchical=true
передается на вашget_terms()
звонок.Обратите внимание, что
hierarchical=true
это значение по умолчанию, поэтому просто убедитесь, что оно не было переопределеноfalse
.источник
get_terms()
возвратит полный список терминов (как указано в OP), но не иерархический список, показывающий родительские / дочерние отношения в соответствии с запросом.Здесь у меня есть четыре уровня выпадающего списка со скрытым первым элементом
источник