2015-12-31 4 views
0

My Wordpress имеет Публикация пользовательский тип сообщения и имеет 10 настраиваемых полей, каждый из которых соответствует автору, который мог внести вклад в эту публикацию. Каждый пост может иметь разных авторов в этих полях или тех же авторов, но в другом порядке. Я использую Wordpress WP_Query для поиска сообщений, соответствующих моим критериям. Мне нужно проверить имя одного автора для всех настраиваемых полей, чтобы узнать, соответствует ли он одному из них. Я пробовал делать это с помощью приведенного ниже кода, но он не дает результата. Любая помощь будет оценена!Wordpress Query, проверьте значение против нескольких ключей

$args = array(
    'post_type' => 'publication', 
    'post_status' => 'publish', 
    'meta_query' => array(
     'relation' => 'AND', 
     array(
      'key' => 'year_published', 
      'value' => $selected_pub_year, 
      'compare' => '=', 
     ), 
     array(
      'key' => array(
       'author_0_name', 
       'author_1_name', 
       'author_2_name', 
       'author_3_name', 
       'author_4_name', 
       'author_5_name', 
       'author_6_name', 
       'author_7_name', 
       'author_8_name', 
       'author_9_name', 
      ), 
      'value' => $selected_pub_author, 
      'compare' => '=', 
     ), 
    ), 
); 

// The above meta-query may be modified through the use of this: 
// echo "<pre>".print_r($args[meta_query][relation])."</pre>"; 

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

ответ

1

Я добавил ИЛИ отношение для почтового автора запроса, попробуйте изменить массив аргументов, как следовать,

$args = array(
    'post_type' => 'publication', 
    'post_status' => 'publish', 
    'meta_query' => array(
     'relation' => 'AND', 
     array(
      'key'  => 'year_published', 
      'value' => $selected_pub_year, 
      'compare' => '=', 
     ), 
     array(
      'relation' => 'OR', 
      array(
       'key'  => 'author_0_name', 
       'value' => $selected_pub_author, 
       'compare' => '=', 
      ), 
      array(
       'key'  => 'author_1_name', 
       'value' => $selected_pub_author, 
       'compare' => '=', 
      ), 
      array(
       'key'  => 'author_2_name', 
       'value' => $selected_pub_author, 
       'compare' => '=', 
      ), 
      array(
       'key'  => 'author_3_name', 
       'value' => $selected_pub_author, 
       'compare' => '=', 
      ), 
      array(
       'key'  => 'author_4_name', 
       'value' => $selected_pub_author, 
       'compare' => '=', 
      ), 
      array(
       'key'  => 'author_5_name', 
       'value' => $selected_pub_author, 
       'compare' => '=', 
      ), 
      array(
       'key'  => 'author_6_name', 
       'value' => $selected_pub_author, 
       'compare' => '=', 
      ), 
      array(
       'key'  => 'author_7_name', 
       'value' => $selected_pub_author, 
       'compare' => '=', 
      ), 
      array(
       'key'  => 'author_8_name', 
       'value' => $selected_pub_author, 
       'compare' => '=', 
      ), 
      array(
       'key'  => 'author_9_name', 
       'value' => $selected_pub_author, 
       'compare' => '=', 
      ), 
     ), 
    ), 
); 
$the_query = new WP_Query($args); 
+0

Благодаря @Milap ваш код работает замечательно! Однако нет ли лучшего способа сделать это, чем перечислить все разные ключи отдельно? Таким образом, многие вещи повторяются, поэтому почему он не работает, если мы передаем ключ в виде массива имен ключей? –

+0

@ShahraizT. возможно, будет возможность сделать это в одном массиве, вы можете обойти его. если вы его найдете, не забудьте опубликовать его здесь. во всяком случае, любезно согласиться с ответом на то, чтобы завершить эту тему. – Milap