사용자 지정 게시물 유형, 사용자 지정 메타 및 검색 필드에 대한 사용자 지정 검색
-
-
[이 답변을 보셨습니까] (http://wordpress.stackexchange.com/questions/66815/extending-search-query-with-additional-sentence-value/66904#66904)?[Have you seen this answer](http://wordpress.stackexchange.com/questions/66815/extending-search-query-with-additional-sentence-value/66904#66904)?
- 0
- 2013-07-08
- kaiser
-
나는 그렇지 않지만 내가하려는 일에 대해 엄청나게 복잡해 보입니까?I'd not but it seems massively complex for what I'm trying to do?
- 0
- 2013-07-08
- James J
-
"엄청나게 복잡하다"는 것은 그렇게 많은 텍스트를 읽고 싶지 않다는 것을 의미합니다. 그렇죠?: P 읽어주세요.그것은 당신을 최소한의 절반으로 줄입니다."massively complex" means you don't want read that much text, right? :P Please read it. It will bring you down half the way minimum.
- 1
- 2013-07-08
- kaiser
-
그 질문에 진전이 있습니까?Any progress on that question?
- 0
- 2013-08-01
- kaiser
-
2 대답
- 투표
-
- 2013-07-08
검색어를 확장하려면
pre_get_posts
-필터를 통해 확장해야합니다. 그런 다음 "사용자 지정 필드"또는 메타 쿼리 를 수행하세요.add_action( 'pre_get_posts', 'wpse105969_extended_search' ); function wpse105969_extended_search( $query ) { // Make sure we got a search query // and we're only modifying the main query. if ( ! $query->is_main_query() AND '' === $query->get( 's' ) AND 'your_custom_post_type' === $query->get( 'post_type' ) ) return $query; // Alter whatever you need: Make, Model, etc. $query->set( 'meta_query', array( 'relation' => 'OR', array( 'key' => 'color', 'value' => 'blue', 'compare' => 'NOT LIKE' ), array( 'key' => 'price', 'value' => array( 20, 100 ), 'type' => 'numeric', 'compare' => 'BETWEEN' ) ) ); return $query; }
If you want to extend your query, you should extend it through the
pre_get_posts
-filter. Then just do a "Custom Field" or meta query.add_action( 'pre_get_posts', 'wpse105969_extended_search' ); function wpse105969_extended_search( $query ) { // Make sure we got a search query // and we're only modifying the main query. if ( ! $query->is_main_query() AND '' === $query->get( 's' ) AND 'your_custom_post_type' === $query->get( 'post_type' ) ) return $query; // Alter whatever you need: Make, Model, etc. $query->set( 'meta_query', array( 'relation' => 'OR', array( 'key' => 'color', 'value' => 'blue', 'compare' => 'NOT LIKE' ), array( 'key' => 'price', 'value' => array( 20, 100 ), 'type' => 'numeric', 'compare' => 'BETWEEN' ) ) ); return $query; }
-
대답 해 주셔서 감사합니다. 실제로 일반 워드 프레스 검색에 필요한 's'필드를 사용하지 않습니다 (사용자 지정 게시물 유형 메타 정보 만 검색).어쨌든 검색 양식에서 's'필드를 사용하지 않고 이에 대한 정보를 찾는 데 어려움을 겪고 있습니까?다시 한 번 감사드립니다.Hi thanks for the answer - I dont actually use the 's' field that normal wordpress searches require (im only search for the custom post types meta details). Is there anyway to NOT use the 's' field in the search form, struggling to find info on this. Thanks again.
- 0
- 2013-07-08
- James J
-
또한 내functions.php에 코드를 추가하고 내 필드에 추가했지만 저장하면 워드 프레스가 중단됩니다 (오류 없음).워드 프레스에서 아무것도 작동하지 않습니다 (탐색,게시물 등).Also, I've added your code to my functions.php and added in my fields but when i save it breaks wordpress (no errors). Nothing from wordpress works (nav, posts etc).
- 0
- 2013-07-08
- James J
-
@JamesJ _your_ 코드로 업데이트를 게시하십시오.힌트 : 사용자 지정 게시물 유형 이름을 변경하고`WP_DEBUG`를`true`로 설정 했습니까?@JamesJ Please post an update with _your_ code. Hint: Did you change the custom post type name and did you set `WP_DEBUG` to `true`?
- 0
- 2013-07-09
- kaiser
-
- 2018-08-07
다음은 코드입니다. 필요에 따라
$post_type
및$custom_fields
를 변경할 수 있습니다.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' );
Here’s the code. You can change
$post_type
and$custom_fields
according to your needs.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' );
특정 사용자 지정 게시물 유형 (차량)에 대한 검색 양식을 작성하고 해당 사용자 지정 게시물 유형의 사용자 지정 메타 필드 (가격,연령) 및 사용자 지정 분류 (make)에 대한 필터를 갖고 싶습니다. 이것은 사이트 검색을 완전히 대체하고 사용 가능한 유일한 검색이므로 사용자 지정 템플릿 내에서 search.php를 사용하려고했습니다.
검색 결과는 다음과 같습니다.
차량 검색
제조업체 (Audi,BMW 등 모든 맞춤 분류로 가득 찬 선택란)
모델 (사람이 무엇을 입력하든 입력 할 수있는 일반 입력 필드)
이상 가격 (1000에서 시작하는 가격이있는 선택 상자)
연령 (1 세 미만,3 세 미만,5 세 미만,10 세 미만과 같은 옵션이있는 선택란)
맞춤 필드를 처음 사용하고 어디서부터 시작해야할지 잘 모르겠습니다 (Google에서 몇 가지 예를 찾았지만 원하는대로 정확히 수행하는 것은 없습니다). 나는 정말로 플러그인을 사용하고 싶지 않았습니다. search.php 내에서 양식에서 전달 된 데이터를 가져 와서 WP_Query에 전달할 $ args를 빌드하는 데 사용합니까?
누군가 나를 올바른 방향으로 안내해 주시겠습니까? 미리 감사드립니다