Поиск сообщений по нескольким значениям пользовательской таксономии

У меня есть пользовательская таксономия под названием Country. Значения включают названия отдельных стран, а также поле «Международный», которое должно представлять все страны.

Вот как это должно работать. Если я выполню поиск по значению «Международный», он должен найти все сообщения, в которых в качестве значения страны указано только «Международный». Однако, если я выполню поиск по значению «США», он должен найти все сообщения со значением страны «США» плюс все сообщения со значением страны «Международный», отфильтровывая любые повторяющиеся сообщения.

Я мог бы сделать международный как родительский для всех других значений страны, но на самом деле это будет иметь обратное влияние, поскольку поиск сообщений по международному также подтянет сообщения, предназначенные исключительно для, скажем, США. Я полагаю, у меня может быть что-то вроде ниже,

query_posts( array(
  "tax_query" => array(
    array(
      "taxonomy" => "country",
      "field" => "slug",
      "terms" => array( "international", "usa" ),
      "operator" => 'AND'
    )
  )
) );

Но нужно ли это делать для всех значений страны? Или как сделать это условно, только когда значение поля не «Международное»?


person redGREENblue    schedule 22.11.2016    source источник


Ответы (1)


Возможно, сделайте что-нибудь, что зациклит весь ваш фильтр и каждый раз будет создавать другой массив фильтров query_post. Я не понимаю, как вы называете страну «международной», может быть, есть другой подход к тому, чего вы пытаетесь достичь.

if ($filter)
        {
        $filterArray = array(
            'relation' => 'AND',
        );
        foreach($filter as $item)
            {
              //IF Statement here
            array_push($filterArray, array(
                'key' => 'country',
                'value' => $item,
                'compare' => '='
            ));
            }
        }
person vico    schedule 22.11.2016