2013-12-03 5 views
0

Я занимаюсь разработкой веб-приложения с использованием WordPress. Я создал пользовательский пост с несколькими настраиваемыми полями. Когда я ищу сообщение, используя поле поиска WordPress, отправляется только сообщение с заголовком, которое соответствует строке поиска. Я хочу добавить пользовательские поля в поиск домена.Поиск с использованием настраиваемых полей в wordpress

У меня есть поиск по пользовательским значениям полей в WordPress?

+0

Я нашел полезный пример на Codex. Я использую $ query = new WP_Query (array ('meta_key' => 'color', 'meta_value' => 'blue', 'meta_compare' => '! =')); –

ответ

1

следующие можно сделать

$args=array(
'post_type'=>'custom post', 
'order'=>'ASC', 
'orderby'=>'menu_order', 
'meta_query' => array (
      array (
       'key' => 'meta-key', 
       'value' => 'meta-value', 
      ) 
     ) 
); 
$the_query = new WP_Query($args); 
if ($the_query->have_posts()) { 
    while ($the_query->have_posts()) { 
     $the_query->the_post(); 
     echo the_title(); 

       } 
} 
wp_reset_postdata(); 
0

Чтобы запросить кучу настраиваемых полей, мне было проще использовать фильтры поиска.

http://codex.wordpress.org/Custom_Queries Прокрутите вниз до раздела «Поиск ключевых слов в таблице плагинов» для примера.

Вот краткий фрагмент кода формируют свой обычай «posts_where» фильтра, так что вы можете получить представление о том:

function custom_search_where($where) { 
    // put the custom fields into an array 
    $customs = array('custom_field1', 'custom_field2', 'custom_field3'); 

    foreach($customs as $custom) { 
     $query .= " OR ("; 
     $query .= "(m.meta_key = '$custom')"; 
     $query .= " AND (m.meta_value LIKE '{$n}{$term}{$n}')"; 
     $query .= ")"; 
    } 

    $where = " AND ({$query}) AND ($wpdb->posts.post_status = 'publish') "; 
    return($where); 
} 

add_filter('posts_where', 'custom_search_where'); 

Там намного больше кода, но между примером Кодекса и выше фрагмента кода, он должен дать вам хорошая идея.

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