2012-06-24 2 views
0

Здесь я наткнулся на какой-то спотыкающийся бок, и я не могу найти его.Создание пользовательского запроса WP

Я пытаюсь создать пользовательский запрос WP, который ищет сообщения по странам происхождения, выбирая сразу несколько стран.

У меня есть таблица, которая отображает страны в регионы, поэтому первоначальный запрос будет искать выбранный регион и вернуть все страны в этом регионе в виде массива. Например, если вы выберете Африку, она вернет целый ряд стран в Африке.

if(!empty($_REQUEST['region'])){ 
    $region = $_REQUEST['region']; 

    $regionresult = mysql_query("SELECT * FROM gallery_regions WHERE region='$region'") or die(mysql_error()); 
    $num_rows = mysql_num_rows($regionresult); 

    if (!$regionresult) { 
     $message = 'Invalid query: ' . mysql_error() . "\n"; 
     $message .= 'Whole query: ' . $query; 
     die($message); 
    } 
} else { 
    $region = NULL; 
} 

Эта часть работает.

Теперь я хочу использовать возвращаемый массив для поиска моих сообщений WP для любых, которые возникли из любой из стран в массиве. Это та часть, которую я не могу приступить к работе:

$country_search = array(mysql_fetch_array($regionresult)); 
$args = array(
    'posts_per_page' => -1, 
    'meta_query' => array(
     array(
      'key' => 'Country', 
      'value' => '$country_search', 
      'compare' => 'IN', 
      'category' => 'Gallery' 
     ) 
    ) 
); 
$query = new WP_Query($args); 

Я не верну никаких результатов. В самом деле, если включить echo "$args";, то я вернусь просто слово «Массив». Я также хочу, чтобы он возвращал результаты из определенной категории.

Я уверен, что я пропускаю что-то простое. Может ли кто-нибудь помочь?

Спасибо!

ти

+1

Вы пробовали 'print_r ($ args)' вместо 'echo $ args'? –

+0

Это возвращает это: «Массив ([posts_per_page] => -1 [meta_query] => Array ([0] => Массив ([ключ] => Страна [значение] => $ country_search [compare] => IN))) « –

+0

' 'value' => '$ country_search'' должен быть '' value' => $ country_search' без кавычек. –

ответ

1

Я думал, что проблема заключалась в том, что два объекта массива, и что это:

$country_search = array(mysql_fetch_array($regionresult)); 
$args = array(
    'posts_per_page' => -1, 
    'meta_query' => array(
     array(
      'key' => 'Country', 
      'value' => '$country_search', 
      'compare' => 'IN', 
     ) 
    ) 
); 
$query = new WP_Query($args); 

Если бы это:

$country_search = array(mysql_fetch_array($regionresult)); 
$args = array(
    'posts_per_page' => -1, 
    'meta_query' => array(
      'key' => 'Country', 
      'value' => $country_search, 
      'compare' => 'IN', 
    ) 
); 
$query = new WP_Query($args); 

Но тогда, вместо того, чтобы не возвращался ни одного сообщения, он вернулся все они. Ворчать!

Это комплекс- ного, чтобы быть комбинацией вопросов:

  1. Вместо $country_search_array на взрывается, он должен быть добавлен как в запросе.
  2. Поскольку это массив, мы не можем использовать '=' для сравнения. Это должно быть 'IN'

Я не мог понять это без помощи, которую я получил здесь. Опять же, спасибо!

0

вы пробовали

'value' => $country_search, 

вместо

'value' => '$country_search', 

без кавычек?

+0

Да, я постоянно переключался туда и обратно. Вот где я сейчас: http: //www.morepositive.com/gallery-test/? Region = AF –

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