Recherche personnalisée pour le type de message personnalisé, les méta personnalisés et les champs de recherche
-
-
[Avez-vous vu cette réponse] (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
-
Jene leferaispasmais celame sembleextrêmement complexepour ce quej'essaye defaire?I'd not but it seems massively complex for what I'm trying to do?
- 0
- 2013-07-08
- James J
-
«massivement complexe» signifie que vousne voulezpas lire autant detexte,non?: P Veuillez le lire.Cela vous ramènera à lamoitié duminimum."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
-
Desprogrès sur cette question?Any progress on that question?
- 0
- 2013-08-01
- kaiser
-
2 réponses
- votes
-
- 2013-07-08
Si vous souhaitez étendre votre requête,vous devez l'étendre via le
pre_get_posts
-filter. Ensuite,faites simplement un "Champpersonnalisé" ou uneméta-requête .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; }
-
Salutmercipour la réponse - Jen'utilisepas réellement le champ 's' requispar les recherches wordpressnormales (jene recherche que lesméta-détails destypes demessagespersonnalisés).Est-ilpossible dene PAS utiliser le champ 's' dans leformulaire de recherche,ayant dumal àtrouver desinformations à ce sujet.Merciencore.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
-
Deplus,j'ai ajouté votre code àmonfunctions.phpet ajouté dansmes champs,mais lorsqueje l'enregistre,il casse wordpress (pas d'erreurs).Rien de WordPressfonctionne (nav,messages,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 Veuillezpublier unemise àjour avec _votre_ code.Astuce: avez-vous changé lenom dutype depublicationpersonnaliséet avez-vous défini `WP_DEBUG` sur`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
Voici le code. Vouspouvezmodifier
$post_type
et$custom_fields
en fonction de vosbesoins.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' );
Je voudrais créer unformulaire de recherchepour untype depublicationpersonnalisé spécifique (véhicule)et avoir desfiltrespour lesméta-champspersonnalisés de cetype depublicationpersonnalisé (prix,âge)et lestaxonomiespersonnalisées (marque). Cela remplaceratotalement la recherche de siteset sera la seule recherche disponible,j'allais donc utiliser search.php dansmonmodèlepersonnalisé.
J'aime que la recherche ressemble à quelque chose comme:
Recherchernos véhicules
Faire (cochez la casepleine detoutes lestaxonomiespersonnalisées - Audi,BMW,etc.).
Prix supérieurs à (cochez la case avec desprix àpartir de 1 000)
Âge (cochez la case avec des optionstelles quemoins d'un an,moins de 3 ans,moins de 5 ans,moins de 10 ans).
Je suisnouveau dans les champspersonnaliséset jene saispas vraimentpar où commencer (j'aitrouvé quelquesexemples sur Googlemais aucunne faitexactement ce queje vise). Jene voulaispas vraiment utiliser depluginnonplus. J'imagine que dans search.phpje récupère les donnéespassées duformulaireet les utilisepour construire $ argsjusqu'àpasser à WP_Query?
Quelqu'unpourrait-ilm'indiquer labonne direction s'il vousplaît? Merci d'avance