2015-11-18 2 views
0

Если бы я с помощью SQL заявления, это то, что это будет выглядеть так:Как решить более сложную WP_Query meta_query с WP названием

select * from courses where active = 1 AND (title = $string OR description = $string) 

«курсы» тип таможенного поста

«активный 'обычай поле, созданное с АКФ

„описание“ обычай поле, созданное с АКФ

„название“ стандартный заголовок WP для сообщений

Это то, что я до сих пор:

$args_courses = array(
       'post_type' => 'courses', 
       'posts_per_page' => 9999, 
       'meta_query' => array(
         array(
          'key' => 'active', 
          'value' => 1, 
          'compare' => '=' 
         ), 
         'relation' => 'AND', 
         array(
          'key' => 'description', 
          'value' => $string, 
          'compare' => '=' 
         ), 
         'relation' => 'OR', 
         array(
          'key' => 'title', 
          'value' => $string, 
          'compare' => '='  
         ) 
       ), 
      ); 

Кажется, что я не могу получить доступ название WP через meta_query, но не могу понять, как превратить мой запрос вокруг так «активный» остается первым столбцом для проверки.

Заранее благодарим за любую помощь!

ответ

0

Что вы пытаетесь сделать, не поддерживается функцией по умолчанию WP_Query, однако вы можете расширить ее, как описано в следующем ответе с сайта WordPress Stackexchange. Обратите внимание, что вам может потребоваться изменить его далее для вашего конкретного варианта использования.

https://wordpress.stackexchange.com/questions/178484/wp-query-args-title-or-meta-value

Несколько замечаний по вашему текущему запросу.

  • relation следует использовать только один раз в вашем meta_query. WordPress использует массивы для группировки и не знал бы использовать «И» или «ИЛИ» в вашем примере.
  • Похоже, вы хотите «все» сообщения, а не действительно 9999 сообщений, поэтому вы должны использовать -1 для извлечения всего в одном наборе результатов.