2014-05-19 2 views
2

"s"매개 변수와 함께 WP_Query를 사용하고 있지만 게시물의 모든 필드를 검색하며 게시물의 제목 만 검색하려고합니다. 올바른 방법은 무엇인지 모르십니까?Wordpress WP_Query 검색 제목 만

$args = array(
    's' => $_POST['k'], 
      'post_type' => 'my_post', 
      "nopaging"=>true, 
      'meta_query' => array(

      ) 
     ); 
$my_query = new WP_Query($args); 

답변

2

wordpress "posts_search"에 필터를 추가해야합니다.

활성 테마의 functions.php 파일에 다음 코드를 추가하면 WordPress 검색 결과가 페이지 및 글 제목으로 만 제한됩니다.

// 제한 검색은 제목 만

function ni_search_by_title_only($search, &$wp_query) 
{ 
global $wpdb; 
if (empty($search)) 
    return $search; // skip processing - no search term in query 
$q = $wp_query->query_vars; 
$n = ! empty($q['exact']) ? '' : '%'; 
$search = 
$searchand = ''; 
foreach ((array) $q['search_terms'] as $term) { 
    $term = esc_sql(like_escape($term)); 
    $search .= "{$searchand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')"; 
    $searchand = ' AND '; 
} 
if (! empty($search)) { 
    $search = " AND ({$search}) "; 
    if (! is_user_logged_in()) 
     $search .= " AND ($wpdb->posts.post_password = '') "; 
} 
return $search; 
} 
add_filter('posts_search', 'ni_search_by_title_only', 500, 2); 
0

한 가지 흥미로운 일을 게시합니다. 제품에서이 작업을하려면 get_product_search_form 후크를 사용해야합니다.

add_filter('get_product_search_form', 'ni_search_by_title_only', 500, 2); 

이 방법의 결과는 단지 타이틀에서 검색로부터 주어져야한다.

관련 문제