Búsqueda personalizada de tipo de publicación personalizada, meta personalizada y campos de búsqueda
-
-
[¿Has vistoesta respuesta] (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
-
No lo haría,peropareceenormemente complejopara lo queestoytratando de hacer.I'd not but it seems massively complex for what I'm trying to do?
- 0
- 2013-07-08
- James J
-
"masivamente complejo" significa queno quieres leertantotexto,¿verdad?: P Porfavor,léalo.Tebajará lamitad del caminomínimo."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
-
¿Algúnprogresoen esapregunta?Any progress on that question?
- 0
- 2013-08-01
- kaiser
-
2 respuestas
- votos
-
- 2013-07-08
Si desea ampliar su consulta,debe ampliarlamedianteelfiltro
pre_get_posts
. Luego,simplemente haga un "Campopersonalizado" ometa consulta .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; }
-
Hola,graciaspor la respuesta:en realidadno usoel campo 's' que requieren lasbúsquedasnormales de wordpress (solobusco losmetadetalles de lostipos depublicacionespersonalizadas).¿Hay algunaforma de NO usarel campo 's'en elformulario debúsqueda,luchandoporencontrarinformación sobreesto?Gracias denuevo.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
-
Además,agregué su código ami functions.php y lo agreguéen mis campos,pero cuando loguardo,rompe wordpress (sinerrores).Nada de WordPressfunciona (navegación,publicaciones,etc.).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 Publica una actualización con _tu_ código.Pista: ¿Cambiasteelnombre deltipo depublicaciónpersonalizada yestableciste `WP_DEBUG`en`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
Aquíestáel código. Puede cambiar
$post_type
y$custom_fields
según susnecesidades.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' );
Megustaría crear unformulario debúsquedapara untipo depublicaciónpersonalizadoespecífico (vehículo) ytenerfiltrospara losmetacampospersonalizados (precio,edad) ytaxonomíaspersonalizadas (marca) deesetipo depublicacionespersonalizadas. Esto reemplazarátotalmente labúsqueda de sitios y será la únicabúsqueda disponible,así queiba a usar search.php dentro demi plantillapersonalizada.
Megusta que labúsqueda separezca a:
Busquenuestros vehículos
Marca (cuadro de selección lleno detodas lastaxonomíaspersonalizadas: Audi,BMW,etc.).
Modelo (campo deentradanormalpara que lagente escriba lo que sea).
Precios superiores a (seleccione la casilla conprecios apartir de 1000)
Edad (seleccioneel cuadro con opciones comomenor de 1 año,menor de 3 años,menor de 5 años,menor de 10 años).
Soynuevoen los campospersonalizados y realmenteno sépor dóndeempezar (encontré algunosejemplosen Google,peroninguno haceexactamente lo quepretendo). Realmentetampoco quería usar un complemento. Supongo que dentro de search.phptomo los datospasados delformulario y los usopara construir $ argsparapasar a WP_Query.
¿Podría alguienindicarme la dirección correcta,porfavor? Gracias de antemano