Argomenti query WP - Titolo o meta valore
-
-
Hoprovato ad aggiungere $ args ['relazione']='OR';Manon è riconosciuto.Sembra chemi manchi come controllare la logica condizionaletramite args.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 risposta
- voti
-
- 2015-02-18
Nota che laparte
relation
nell'argomentometa_query
viene utilizzata soloper definire la relazionetra le query submeta .Puoiprovare questa configurazione:
$args = [ '_meta_or_title' => $thesearch, // Our new custom argument! 'meta_query' => [ [ 'key' => 'model_name', 'value' => $thesearch, 'compare' => 'like' ] ], ];
dove abbiamointrodotto un argomentopersonalizzato
_meta_or_title
per attivare la query meta OR .Questo è supportato dal seguenteplugin:
<?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; }); } });
-
Wow.Rispostafantastica!Questo dovrebbeessere al centro.Wow. Awesome answer! This should be in the core.
- 0
- 2015-02-18
- Bryan
-
La rispostami haportato ametà strada.http://wordpress.stackexchange.com/questions/178574/acf-relationship-field-search-filtering Qualcheidea su questoprossimo?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
-
Ho usato questa rispostaper creare una queryper unmeta valore specificonellapaginaedit.phpper untipo dipostpersonalizzato.Non chiedo affattoiltitolo,perchéilmiotipo dipostpersonalizzatonon hatitolo.Pertanto,ho sostituito "" AND (% s OR% s) "" con "" OR (% s) ""nella query sqle mi sono sbarazzato della riga "$ wpdb->prepare (" {$ wpdb->posts} .post_title='% s' ",$title),` deltutto.È un approccio valido?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 Sono contento chetu l'abbiatrovato utile.Seti capisco correttamente,letuemodifiche dovrebberofunzionare.@BdN3504 Glad to hear you found it somewhat useful. If I understand you correctly, your modifications should work.
- 0
- 2015-05-17
- birgire
-
Grazieper la risposta.lemie modifichefunzionano,solo chenon sono sicuro che sia l'approcciogiusto.In realtà voglio sbarazzarmi deltitoloe deiparametri di contenutonella querye interrogare soloilmeta.sebbene l'approccio attualefunzioninon èilpiùpraticothanks 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 okfantastico,non sono a conoscenza di unmodonativo (senza usarefiltri)per cambiare AND -> ORper l'interameta query,mapuoi ovviamentemodificare le relazionimeta queryin moltimodi all'interno di `meta_query` di`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
-
Ottimotrucco.Se vuoi una ricerca di sottostringaperiltitolo,sostituisci `post_title='% s'` con`post_title come' %%% 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
-
Comepossoeseguire una query conil valore deltitoloe dellatassonomiainvece del valoremeta?How would I perform a query with title and taxonomy value instead of meta value?
- 0
- 2018-10-13
- Jeff
-
@jeff Una volta ho scritto unpluginper combinare le query: https://github.com/birgire/wp-combine-queries.Inoltre [qui] (https://wordpress.stackexchange.com/questions/173628/wp-query-or-clause-for-tax-query-and-keywords/174221#174221) Hogiocato con la ricerca (titolo,estratto,contenuto) o queryfiscale.[Qui] (https://stackoverflow.com/a/22633399/2078474) Hotrovato un'altra risposta simile che ho sperimentato.Possiamo anche scrivere due `WP_Query` separati,quindi raccoglieree combinaregliid deipost risultantiin unterzo` WP_Query` (senecessarioe se l'ordine PHPnon è sufficiente)tramiteilparametro diinput `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 Sono andato conilpercorso di due query separatee hafunzionato,grazie.@birgire I went with the two separate queries route and it worked, thank you.
- 0
- 2018-10-13
- Jeff
-
@ Jefffelice di sentire che hafunzionatoperte.@Jeff glad to hear that worked for you.
- 0
- 2018-10-13
- birgire
-
@biergie Grazieper questafantastica soluzione!Funzionabenissimo,ma lamia ricercanon restituisce alcun risultato,quando utilizzo _meta_or_title +meta query + queryfiscale.Quando si utilizzailfiltropersonalizzatoe si aggiunge unatax_query,l'elemento `$ sql ['where']` è vuoto.Hai qualcheidea su come rimediare?@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 Thanks.Non l'hotestato da unpo ',mapotresti assicurarti chenon ci siano altriplugin/codice che loinfluenzanoe ades.eseguito conil debug attivo.@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 -mi chiedevo solo setu o qualcunopotresteindicare dove usi $ args?Grazie.@birgire - just wondering if you or someone could point out where you use the $args? thanks.
- 0
- 2020-06-29
- v3nt
-
`$ Q->get ('_meta_or_title')` è uguale a `$ args ['_meta_or_title']`.The `$q->get( '_meta_or_title' )` is same as `$args['_meta_or_title']`.
- 0
- 2020-06-30
- birgire
Comeeseguo querypermeta_value otitolo?
Seimpostometa_values,
vengono aggiunti automaticamente come AND.
Questa ricerca sarebbe:
Hobisogno