2015-01-04 3 views
2

내 Wordpress 사용자 지정 쿼리 문제에 대한 솔루션을 찾고 있습니다.Wordpress : 쿼리 post_title 또는 meta_query

사용자가 텍스트를 입력 할 수있는 검색 양식이 있습니다.이 텍스트는 post_title 또는 meta_value (Company ID)의 단어 일 수 있습니다.

그래서 post_title 또는 meta_key-Field "id-number"인 문자열을 검색해야하지만 다른 추가 검색 매개 변수도 있습니다.

이 내 인수는 WP_Query위한 것입니다 :

Array(
    [post_type] => company 
    [pagination] => 1 
    [posts_per_page] => 10 
    [paged] => 1 
    [meta_query] => Array 
     (
      [relation] => AND 
      [0] => Array 
       (
        [0] => Array 
         (
          [key] => id-number 
          [value] => FOOBAR 
         ) 

        [1] => Array 
         (
          [key] => post_title 
          [value] => FOOBAR 
          [compare] => LIKE 
         ) 

        [relation] => OR 
       ) 

      [1] => Array 
       (
        [relation] => AND 
        [0] => Array 
         (
          [0] => Array 
           (
            [key] => country 
            [value] => USA 
           ) 
          [relation] => OR 
         ) 
       ) 
     ) 
) 

Array[meta_query][0][1] (post_title)은 자리 표시 자입니다 - 나는 문제가 해결되지 수있어,하지만 난에 이렇게 (id-number OR post_title)(all other vars...)

+0

post_meta 테이블에 저장되어 있지 않으므로 메타 쿼리에서 post_title을 사용할 수 있다고 생각하지 않습니다. –

답변

0

에 대한 방법을 검색 할 수 있습니다 WP_Query는 직접 가능하지 않습니다. 질의는 AND 진술과 $where 변수의 연결의 긴 일련의 대부분으로 괴상한 (1000 줄 이상) WP_Query::get_posts 방법 (wp-includes/query.php 참조)의 인수로 구성됩니다.

이제 여러 변수에 연결하여 해당 변수 (쿼리에 대한 SQL을 보유하고 있음)를 구성하는 방법을 사용자 정의 할 수 있습니다. 귀하의 경우, 다음 중 하나가 적합 할 수 있습니다 :

  • posts_search은 : 당신은 검색 쿼리 (워드 프레스 내장/표준 검색 폼으로부터) 해석하는 방법을 변경할 수 있습니다. 그런 다음 검색 쿼리에서 필요에 따라 where 쿼리를 수동으로 생성합니다.
  • posts_where : 모든 검색어에 대해 전체 검색어를 변경할 수 있습니다.

필터를 사용하면 WP_Query에 인수를 보내지 않고 "일반적인 방법"으로 구성하고 SQL WHERE 쿼리가 구성되는 방법을 재정의합니다. 자신의 SQL 쿼리를 완전히 실행하는 것이 나을 것입니다. 코덱스에는이 작업을 수행하는 방법을 자세히 설명한 Displaying Posts using a Custom Select Query이라는 기사가 있습니다.


1. WP_Query는 완전한 ORM하지만, 그 규칙에 따라 쿼리 문자열 변수 및 필터링 게시물을 복용위한 전용 클래스 전혀 없습니다.