WP_Query tax_query – Показать результаты, если у ребенка есть родительский элемент X

Я сделал специальный поиск, который включает в себя трехуровневую пользовательскую таксономию, которая выглядит так:

континент – страна – – государство

Поиск форматируется следующим образом.

Вот моя проблема:

Пример данных:

Название таксономии = «местоположения». Пользовательский тип сообщения = «фирмы».

America [term_id = 1] - United States [term_id = 2] - - Idaho [term_id = 3] - - New York [term_id = 4] - - Wisconsin [term_id = 5] 

Итак, как я могу получить результаты для всех фирм с таксономией «местоположения» РОДИТЕЛЬ ID = 2 (США)?

Предположим, пользователь выберет США в раскрывающемся списке. Результаты не будут получены, потому что для типа персонализированного типа фирм выбранная таксономия «местоположения» всегда доводится до уровня государственного уровня. Так, например, фирма с «местоположениями», установленными в Нью-Йорке, не будет отображаться, когда пользователь будет искать «Соединенные Штаты», потому что их идентификатор таксономии «местоположения» равен 4 (государственный уровень) и NOT 2 (уровень страны).

Надеюсь, это имеет смысл … Я думал о том, что, возможно, сохранял уровень уровня страны и континентов в post_meta и условно добавлял мета-запрос на страницу поиска, если выбор не является государственным.

Есть идеи? Я думаю, что это довольно интересная проблема 🙂

благодаря

Solutions Collecting From Web of "WP_Query tax_query – Показать результаты, если у ребенка есть родительский элемент X"

Если я правильно понимаю вас, get_term_children делает то, что вы хотите.

 $term_id = 2; $tax_name = 'locations'; $term_child = get_term_children( $term_id, $tax_name ); 

Другая возможность – использовать get_categories , иметь параметр child_of , taxonomy и depth – лучше будет документация по wp_list_categories , которая предлагает практически такую ​​же функциональность.