2016-06-03 10 views
2

Я пытаюсь включить метатет сообщения в поиск панели администратора Wordpress. Я сделал опрос, и я узнал, что я могу использовать фильтр «pre_get_posts», чтобы установить метатет сообщений в запрос. Поэтому я написал следующий код:Переопределить панель администратора Wordpress

function custom_search_query($query) { 
    if(is_admin() && $query->is_search) { 
    $custom_fields = array(
     // put all the meta fields you want to search for here 
     ["key" => "property-ref-code", "compare" => "LIKE"], 
     ["key" => "property-status", "compare" => "="], 
     ["key" => "price", "compare" => "="], 
     ["key" => "rent-price", "compare" => "="], 
     ["key" => "bedrooms", "compare" => "="], 
    ); 

    $meta_query = $query->get('meta_query'); 

    if (empty($meta_query)) 
    { 
     $meta_query = array(); 
    } 
     $meta_query[] = array('relation' => 'OR'); 
     foreach($custom_fields as $cf) { 

      $meta_query[] = array(
       'key' => $cf["key"], 
       'value' => $query->query_vars['s'], 
       'compare' => $cf["compare"], 
      ); 
     } 
     $query->set("meta_query", $meta_query); 
    } 

} 
add_filter("pre_get_posts", "custom_search_query"); 

Этот код теперь не только ничего не возвращает, но также нарушает поиск WordPress. Что я имею в виду. Если вы отключите этот код, вы можете выполнить поиск по заголовку сообщения и он вернет некоторые результаты, если существует. Тогда, если вы включите код, а поиск по заголовку сообщения ничего не возвращает. В основном я хочу найти недвижимость по цене, код ссылки и т. Д., Которые являются полями postmeta, которые я сделал. Может кто-нибудь помочь мне расширяет WordPress поиска, при поиске свойства для поиска и данные meta_keys

Спасибо

+1

[Тема] (http://wordpress.stackexchange.com/questions/11758/extending-the-search-context-in-the-admin-list-post-screen) может помочь. – MinhTri

ответ

-1

Проблема может быть, что if (empty($meta_query_args)) всегда возвращает истину, как $meta_query_args не определены. Таким образом, фактические meta_queries из поиска удаляются.

+0

Дело не в том, что проблема –

-1
function extend_admin_search($query) { 

    // Extend search for document post type 
    $post_type = 'document'; 
    // Custom fields to search for 
    $custom_fields = array(
     "_file_name", 
    ); 

    if(! is_admin()) 
     return; 

    if ($query->query['post_type'] != $post_type) 
     return; 

    $search_term = $query->query_vars['s']; 

    // Set to empty, otherwise it won't find anything 
    $query->query_vars['s'] = ''; 

    if ($search_term != '') { 
     $meta_query = array('relation' => 'OR'); 

     foreach($custom_fields as $custom_field) { 
      array_push($meta_query, array(
       'key' => $custom_field, 
       'value' => $search_term, 
       'compare' => 'LIKE' 
      )); 
     } 

     $query->set('meta_query', $meta_query); 
    }; 
} 

add_action('pre_get_posts', 'extend_admin_search'); 
+2

Хотя ответы только на один код могут решить проблему, некоторые объяснения вашего кода в отношении того, что вы делаете и почему оно решает проблему, улучшат качество ответа. Это также для будущих ссылок, когда люди возвращаются к этому решению и видят, почему что-то сделано. –

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