Ricerca personalizzata per tipo di post personalizzato, meta personalizzata e campi di ricerca
-
-
[Hai visto questa risposta] (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
-
Non lofareima sembraestremamente complessoper quello che sto cercando difare?I'd not but it seems massively complex for what I'm trying to do?
- 0
- 2013-07-08
- James J
-
"massicciamente complesso" significa chenon vuoi leggere cosìtantotesto,giusto?: P Perfavore leggilo.Tiporterà ametà delminimo."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
-
Qualcheprogresso su questa domanda?Any progress on that question?
- 0
- 2013-08-01
- kaiser
-
2 risposta
- voti
-
- 2013-07-08
Se desideriestendere latua query,dovrestiestenderlatramiteilfiltro
pre_get_posts
. Quindiesegui semplicemente un "Campopersonalizzato" o unameta 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; }
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; }
-
Ciao,grazieper la risposta - In realtànon usoil campo 's' richiesto dallenormali ricerche di wordpress (cerco soloi meta dettagli deitipi dipostpersonalizzati).C'è comunque da NON usareil campo 's'nelmodulo di ricerca,faticando atrovareinformazioni su questo.Grazie ancora.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
-
Inoltre,ho aggiuntoiltuo codice almiofunctions.phpe aggiuntonei miei campi,ma quando lo salvo si rompe wordpress (nessunerrore).Niente dai lavori di wordpress (nav,post,ecc.).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 Perfavorepubblica un aggiornamento coniltuo codice.Suggerimento: hai cambiatoilnome deltipo dipostpersonalizzatoe haiimpostato `WP_DEBUG` su`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
Eccoil codice. Puoimodificare
$post_type
e$custom_fields
in base alletueesigenze.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' );
Vorrei creare unmodulo di ricercaper untipo dipostpersonalizzato specifico (veicolo)e averefiltriperi metacampipersonalizzati di queltipo dipostpersonalizzato (prezzo,età)e tassonomiepersonalizzate (marca). Questo sostituiràtotalmente la ricercanei sitie sarà l'unica ricerca disponibile,quindi avrei utilizzato search.php all'interno delmiomodellopersonalizzato.
Mipiace che la ricerca abbia un aspetto simile a:
Cercanei nostri veicoli
Crea (seleziona la casellapiena ditutte letassonomiepersonalizzate: Audi,BMWecc.).
Modello (campo diimmissionenormalein cui lepersonepossono digitare qualsiasi cosa).
Prezzi superiori (seleziona la casella conprezzi apartire da 1000)
Età (seleziona la casella con opzioni comemeno di 1 anno,meno di 3 anni,meno di 5 anni,meno di 10 anni).
Sononuovonei campipersonalizzatie non so davvero da doveiniziare (hotrovato alcuniesempi su Googlemanessunofaesattamente ciò a cuimiravo). Neancheio volevo usare unplugin. Immagino che all'interno di search.phpprendoi datipassati dalforme li usoper creare $ argsfino apassare a WP_Query?
Qualcunopotrebbeindicarmi lagiusta direzione,perfavore? Graziein anticipo