Как настроить WP_Query?

Здраствуйте!

Подскажите пожалуйста, как решить следующую задачу:

У меня есть кастомный тип записи - objects
Есть кастомная таксономия: object_tag

Сейчас пытаюсь на странице объекта вывести "Объекты рядом" - объекты с той-же таксономии

А проблема вот в чем:

Если у объекта таксономия (object_tag) - "Польша > Варшава", то "Объекты рядом" - все хорошо работает, выводит объекты только из таксономии "Варшава"

Но, вот если задана таксономия "Польша" (то есть, без дочерней...так попросили) - то в "Объекты рядом" выводятся не только объекты из категории "Польша", но и все дочерние записи..включая "Польша > Варшава" и т.д

Мой код:

1. Я запрашиваю все таксономии текущей записи, и выбираю среди них последний:
$terms = wp_get_post_terms( $post->ID, 'object_tag'); 
    $terms_ids = [];

    foreach ( $terms as $term ) {
        $terms_ids[] = $term->term_id;
    }
	$term_id_list = array_pop( $terms_ids );
	echo $term_id_list; // Выводит: 115


2. $args для WP_Query
$args = array(
                        'post_type' => 'bh-objects',
                        'posts_per_page' => 8,
                        'post__not_in' => array(get_the_ID()),
                        'tax_query' => array(
                            'relation' => 'AND',
                            array(
                                'taxonomy' => 'object_tag',
                                'field'    => 'id',
                                'terms'    => $term_id_list
                            )
                        ),
                    );

                    $query = new WP_Query( $args );
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
А почему вы именно последний элемент списка выбираете? Из базы же вам возвращается объект сортированный по имени, вот и получается, что varshava это последний элемент объекта

Кстати, у tax_query есть аргумент include_children, который по умолчанию true, т.е. включает в выборку посты из дочерних терминов
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы