2015-08-02 3 views
0

В настоящее время у меня есть несколько страниц, и на каждой странице есть настраиваемое поле, которое называется «страна».Meta Query Filter by Tag Wordpress

В поле «страна» у меня есть это значение «uk, usa, Brazil».

Что я хочу сделать, это показать сообщения на странице, которые имеют теги, которые я указал в пользовательском поле 'country' (В этом случае показывать сообщения, в которых есть любые теги 'uk', 'usa' и «бразилия»).

У меня есть следующий код, но я не знаю, как манипулировать им, чтобы сделать выше?

$args = array (
    'post_type'    => array('post'), // YOUR POST TYPE 
    'meta_query'    => array(
     array(
      'key'  => 'country', 
      'value'  => $your_country, // THE COUNTRY TO SEARCH 
      'compare' => 'LIKE', // TO SEARCH THIS COUNTRY IN YOUR COMMA SEPERATED STRING 
      'type'  => 'CHAR', 
     ), 
    ), 
); 

// The Query 
$query = new WP_Query($args); 

Кажется, что это просто фильтрация для одного значения?

Любая помощь для достижения вышеуказанного была бы весьма признательна.

ответ

1

Я бы установил пользовательскую таксономию, чтобы создать другую версию «тегов» под названием «страна», вместо этого вы можете сделать таксономический запрос.

См. «Пользовательский интерфейс пользовательского сообщения» для простого интерфейса для создания пользовательской таксономии.

https://wordpress.org/plugins/custom-post-type-ui/ 
  1. Установите CPT UI (плагин выше).
  2. Перейти к «Добавить/редактировать таксономии» в меню. Добавьте «страну» в качестве таксономии. Прикрепите это к вашей должности post_type и 'page'.
  3. Отметьте страницы (используемые для показа сообщений) и «сообщения» с тегами вашей страны.

Затем вы можете использовать пользовательский wp_query в шаблоне страницы, чтобы показывать сообщения, помеченные тегом страны.

Чтобы захватить корочки Страновой, связанные с вашей страницы:

$ countryTerms = wp_get_post_terms ($ post-> ID, 'страна', массив ("поля" => "иды"));

Затем измените аргументы запроса, чтобы собрать сообщения, помеченные страной.

$args = array(
    'post_type' => 'post', 
    'tax_query' => array(
     array(
      'taxonomy' => 'country', 
      'field' => 'term_id', 
      'terms' => $countryTerms 
     ), 
    ), 
); 

Если вы хотите придерживаться мета поля, попробуйте изменить значение «TYPE» в «NUMERIC».

+0

Извините - просто прочитайте сам плагин, мне все равно нужно будет его проставлять через теги, а не обычную таксономию, сможет ли нижняя половина вашего ответа сделать это? – Jonathan

+0

@ Джонатан жаль, что ты меня потерял? Предположим, что вы выбрали решение из принятого ответа? – addedlovely

+0

Все еще немного запутано, я не хочу создавать пользовательский тип сообщения. То, что я пытаюсь сделать, это создать настраиваемое поле на странице, где хранятся теги, которые я хочу отфильтровать сообщения на странице. Я дал вам ответ, когда вы нашли время и подумали написать его :) – Jonathan

Смежные вопросы