Как отфильтровать результаты WP_Query по настраиваемому полю соответствующей записи? - PullRequest
2 голосов
/ 06 июня 2019

У меня есть два типа сообщений:

  1. Места
  2. Отзывы

Тип сообщения Venues содержит следующие настраиваемые поля ACF:

  • Регион
  • Подрегион

Тип публикации "Отзывы" содержит одно настраиваемое поле ACF:

  • Место (которое является объектом сообщения - поле выбора)

Мне нужно отобразить все отзывы о том, кто находится в определенном регионе и / или субрегионе.

Это можно сделать с помощью WP_Query? Или мне нужно сделать модный вызов базы данных?

Это то, что я думал, что изначально сработает, но кажется, что вы не можете получить настраиваемое поле объекта post в качестве meta_query ..

$args = array(
  'post_type' => 'review',
  'posts_per_page' => 18,
  'paged' => $paged,
  'meta_key' => 'venue',
  'meta_query' => array(
     array(
       'key' => 'region',
       'value' => 'napa-valley'
     )
   )
);


1 Ответ

3 голосов
/ 11 июня 2019

Я думаю, что вам нужно 2 цикла здесь, первый цикл по объектам с использованием мета-запроса региона (вы можете просто использовать get_posts () или get_pages () вместо WP_Query) например,

'meta_query' => array(
    array(
        'key' => 'region',
        'value' => 'napa-valley'
        )
)

Затем вы можете поместить идентификаторы мест в определенных регионах в массив

array_push($venue_ids, $post->ID);

Затем вы можете использовать массив $ venue_ids во втором цикле, который будет циклически проходить обзор с использованием мета-запроса, чтобы сопоставить места из ваших идентификаторов первого цикла с идентификаторами объектов записей, выбранных на странице обзора.

'meta_query' => array(
    array(
        'key' => 'venue',
        'value' => $venue_ids
        )
)

Дайте мне знать, если это полезно, и если вы считаете, что это сработает для вас, и я могу предложить дополнительную помощь, если я не объяснил правильно или вам нужна помощь.

...