Arguments de requête WP - Titre ou valeur méta
-
-
J'aiessayé d'ajouter $ args ['relation']='OR';Mais,cen'estpas reconnu.On dirait queje ne saispas comment contrôler la logique conditionnelle via des arguments.I tried adding $args['relation'] = 'OR'; But, it is not recognized. Seems like I missing how to control conditional logic through args.
- 0
- 2015-02-18
- Bryan
-
1 réponses
- votes
-
- 2015-02-18
Notez que lapartie
relation
dans l'argumentmeta_query
,n'est utilisée quepour définir la relationentre les requêtes submeta .Vouspouvezessayer cette configuration:
$args = [ '_meta_or_title' => $thesearch, // Our new custom argument! 'meta_query' => [ [ 'key' => 'model_name', 'value' => $thesearch, 'compare' => 'like' ] ], ];
oùnous avonsintroduit un argumentpersonnalisé
_meta_or_title
pour activer la requête meta ORtitle .Ceciestprisen chargepar leplugin suivant:
<?php /** * Plugin Name: Meta OR Title query in WP_Query * Description: Activated through the '_meta_or_title' argument of WP_Query * Plugin URI: http://wordpress.stackexchange.com/a/178492/26350 * Plugin Author: Birgir Erlendsson (birgire) * Version: 0.0.1 */ add_action( 'pre_get_posts', function( $q ) { if( $title = $q->get( '_meta_or_title' ) ) { add_filter( 'get_meta_sql', function( $sql ) use ( $title ) { global $wpdb; // Only run once: static $nr = 0; if( 0 != $nr++ ) return $sql; // Modify WHERE part: $sql['where'] = sprintf( " AND ( %s OR %s ) ", $wpdb->prepare( "{$wpdb->posts}.post_title = '%s'", $title ), mb_substr( $sql['where'], 5, mb_strlen( $sql['where'] ) ) ); return $sql; }); } });
Note that the
relation
part in themeta_query
argument, is only used to define the relation between the sub meta queries.You can try this setup:
$args = [ '_meta_or_title' => $thesearch, // Our new custom argument! 'meta_query' => [ [ 'key' => 'model_name', 'value' => $thesearch, 'compare' => 'like' ] ], ];
where we have introduced a custom argument
_meta_or_title
to activate the meta OR title query.This is supported by the following plugin:
<?php /** * Plugin Name: Meta OR Title query in WP_Query * Description: Activated through the '_meta_or_title' argument of WP_Query * Plugin URI: http://wordpress.stackexchange.com/a/178492/26350 * Plugin Author: Birgir Erlendsson (birgire) * Version: 0.0.1 */ add_action( 'pre_get_posts', function( $q ) { if( $title = $q->get( '_meta_or_title' ) ) { add_filter( 'get_meta_sql', function( $sql ) use ( $title ) { global $wpdb; // Only run once: static $nr = 0; if( 0 != $nr++ ) return $sql; // Modify WHERE part: $sql['where'] = sprintf( " AND ( %s OR %s ) ", $wpdb->prepare( "{$wpdb->posts}.post_title = '%s'", $title ), mb_substr( $sql['where'], 5, mb_strlen( $sql['where'] ) ) ); return $sql; }); } });
-
Sensationnel.Réponsegéniale!Cela devrait être dans lenoyau.Wow. Awesome answer! This should be in the core.
- 0
- 2015-02-18
- Bryan
-
La réponsem'a amené àmoitié là-bas.http://wordpress.stackexchange.com/questions/178574/acf-relationship-field-search-filtering Uneidée sur ceprochain?The answer got me 1/2 way there. http://wordpress.stackexchange.com/questions/178574/acf-relationship-field-search-filtering Any idea on this next one?
- 1
- 2015-02-18
- Bryan
-
J'ai utilisé cette réponsepour créer une requêtepour une valeurméta spécifique sur lapageedit.phppour untype depublicationpersonnalisé.Jen'interrogepas dutout letitre,carmontype depublicationpersonnalisén'apas detitre.Par conséquent,j'ai remplacé `" AND (% s OR% s) "`par `" OR (% s) "` dans la requête SQLet jeme suis débarrassé de la ligne `$ wpdb->prepare (" {$ wpdb->posts} .post_title='% s' ",$title),` autotal.Est-ce une approche valable?I have used this answer to create a query for one specific meta value on the edit.php page for a custom post type. I don't query the title at all, because my custom post type has no title. Therefore, I replaced `" AND ( %s OR %s ) "` by `" OR ( %s ) "` in the sql query and got rid of the line `$wpdb->prepare( "{$wpdb->posts}.post_title = '%s'", $title ),` altogether. Is this a valid approach?
- 0
- 2015-05-17
- BdN3504
-
@ BdN3504 Heureux d'entendre que vous l'aveztrouvé quelquepeu utile.Sije vous comprendsbien,vosmodifications devraientfonctionner.@BdN3504 Glad to hear you found it somewhat useful. If I understand you correctly, your modifications should work.
- 0
- 2015-05-17
- birgire
-
Mercipour la réponse.mesmodificationsfonctionnent,je ne suispas sûr que ce soit labonne approche.Je veuxen faitme débarrasser desparamètres detitreet de contenu dans la requêteet simplementinterroger laméta.bien que l'approche actuellefonctionne,cen'estpas lapluspratiquethanks for the reply. my modifications do work i'm just not sure if it is the right approach. i actually want to get rid of the title and content parameters in the query and just query the meta. although the current approach works it's not the most practical one
- 0
- 2015-05-17
- BdN3504
-
@ BdN3504 ok super,je ne connaispas unemanièrenative (sans utiliser defiltres) de changer AND -> OUpourtoute laméta-requête,mais vouspouvezbien sûrmodifier les relations deméta-requête deplusieursmanières dans `meta_query` de`WP_Query`.@BdN3504 ok great, I'm not aware of a native way (without using filters) to change AND -> OR for the whole meta query, but you can of course modify the meta query relations in many ways within `meta_query` of `WP_Query`.
- 0
- 2015-05-17
- birgire
-
Supertruc.Si vous voulez une recherche de sous-chaînepour letitre,remplacez `post_title='% s'`par`post_title like' %%% s %% '`.Great trick. If you want a substring search for the title, replace `post_title = '%s'` with `post_title like '%%%s%%'`.
- 4
- 2015-09-30
- jarnoan
-
Commentexécuter une requête avec untitreet une valeur detaxonomie au lieu d'uneméta valeur?How would I perform a query with title and taxonomy value instead of meta value?
- 0
- 2018-10-13
- Jeff
-
@jeff J'ai déjà écrit unpluginpour combiner les requêtes: https://github.com/birgire/wp-combine-queries.Aussi [ici] (https://wordpress.stackexchange.com/questions/173628/wp-query-or-clause-for-tax-query-and-keywords/174221#174221) J'aijoué avec la recherche (titre,extrait,contenu) ou une requêtefiscale.[Ici] (https://stackoverflow.com/a/22633399/2078474) J'aitrouvé une autre réponse similaire quej'aiexpérimentée.Nouspouvons également écrire deux `WP_Query` séparés,puis collecteret combiner lesidentifiants depublication résultants dans untroisième` WP_Query` (sinécessaireet si l'ordre PHPn'estpas suffisant) via leparamètre d'entrée `post__in`.@jeff I once wrote a plugin to combine queries: https://github.com/birgire/wp-combine-queries. Also [here](https://wordpress.stackexchange.com/questions/173628/wp-query-or-clause-for-tax-query-and-keywords/174221#174221) I played with search (title, excerpt, content ) or tax query. [Here](https://stackoverflow.com/a/22633399/2078474) I found another similar answer that I experimented with. We can also write two separate `WP_Query`, then collect and combine the resulting post ids into a third `WP_Query` (if needed and if PHP ordering is not enough) via `post__in` input parameter.
- 1
- 2018-10-13
- birgire
-
@birgire J'ai choisi l'itinéraire des deux requêtes distincteset cela afonctionné,merci.@birgire I went with the two separate queries route and it worked, thank you.
- 0
- 2018-10-13
- Jeff
-
@Jeff heureux d'apprendre que cela afonctionnépour vous.@Jeff glad to hear that worked for you.
- 0
- 2018-10-13
- birgire
-
@biergie Mercipour cette solutiongéniale!Celafonctionnetrèsbien,maisma recherchene renvoie aucun résultat lorsquej'utilise _meta_or_title +méta requête + requêtefiscale.Lorsque vous utilisez votrefiltrepersonnaliséet ajoutez unetax_query,l'élément `$ sql ['where']`est vide.Savez-vous comment résoudre ceproblème?@biergie Thanks for this awsome solution! It works great, but my search returns no result, when i use _meta_or_title + meta query + tax query. When using your custom filter and add a tax_query, the `$sql['where']` item is empty. Do you have any clue how to fix that?
- 0
- 2019-06-06
- chris.ribal
-
@biergie Merci.Jene l'aipastesté depuis unmoment,mais vouspouvez vous assurer qu'iln'y apas d'autresplugins/code qui l'affectentet parex.exécuter avec le débogage activé.@biergie Thanks. I haven't tested it in a while, but you might make sure that there are no other plugins/code affecting it and e.g. run with debugging on.
- 0
- 2019-06-07
- birgire
-
@birgire - vous vous demandez simplement si vous ou quelqu'unpourriezindiquer où vous utilisez les $ args?Merci.@birgire - just wondering if you or someone could point out where you use the $args? thanks.
- 0
- 2020-06-29
- v3nt
-
Le `$ q->get ('_meta_or_title')`estidentique à `$ args ['_meta_or_title']`.The `$q->get( '_meta_or_title' )` is same as `$args['_meta_or_title']`.
- 0
- 2020-06-30
- birgire
Commenteffectuer une requêteparmeta_value outitre?
Sije fixe desmeta_values,
ils sont automatiquement ajoutésen tant que AND.
Cette recherche serait:
J'aibesoin