WP Query Args - Titel oder Metawert
-
-
Ich habe versucht,$ args ['Relation']='OR' hinzuzufügen.Aberes wirdnichterkannt.Es scheint,als würdemirfehlen,wieman diebedingte Logik durch Argumente steuert.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 Antworten
- Stimmen
-
- 2015-02-18
Beachten Sie,dass der Teil
relation
im Argumentmeta_query
nur zum Definieren der Beziehung zwischen den submeta em> -Abfragen verwendet wird.Sie können dieses Setup ausprobieren:
$args = [ '_meta_or_title' => $thesearch, // Our new custom argument! 'meta_query' => [ [ 'key' => 'model_name', 'value' => $thesearch, 'compare' => 'like' ] ], ];
wo wirein benutzerdefiniertes Argument
_meta_or_title
eingeführt haben,um die Abfrage meta ORtitle zu aktivieren.Dies wird vomfolgenden Plugin unterstützt:
<?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; }); } });
-
Beeindruckend.Super Antwort!Dies sollteim Kern sein.Wow. Awesome answer! This should be in the core.
- 0
- 2015-02-18
- Bryan
-
Die Antwortbrachtemich auf halbem Weg dorthin.http://wordpress.stackexchange.com/questions/178574/acf-relationship-field-search-filtering Haben Sieeine Idee zu diesemnächsten?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
-
Ich habe diese Antwort verwendet,umeine Abfragefüreinen bestimmten Metawert auf der Seiteedit.phpfüreinen benutzerdefinierten Beitragstyp zuerstellen.Ichfrage den Titel überhauptnicht ab,damein benutzerdefinierter Beitragstyp keinen Titel hat.Daher habeichin der SQL-Abfrage "AND (% s OR% s)" durch "OR (% s)"ersetzt und die Zeile "$ wpdb->prepare (" {$ wpdb->posts "entfernt} .post_title='% s' ",$title),`insgesamt.Ist dasein gültiger Ansatz?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 Schön zu hören,dass Sieesetwasnützlichfanden.Wennich Sie richtig verstehe,sollten Ihre Änderungenfunktionieren.@BdN3504 Glad to hear you found it somewhat useful. If I understand you correctly, your modifications should work.
- 0
- 2015-05-17
- birgire
-
dankefür die Antwort.Meine Modifikationenfunktionieren Ichbin mireinfachnicht sicher,obes der richtige Ansatzist.Ichmöchteeigentlich die Titel- und Inhaltsparameterin der Abfrage loswerden undnur das Meta abfragen.Obwohl der derzeitige Ansatzfunktioniert,isternicht derpraktischstethanks 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 oktoll,ich kenne keinenative Methode (ohne Filter) zum Ändern von AND -> ORfür diegesamte Metaabfrage,aber Sie können die Metaabfragebeziehungeninnerhalb von `meta_query` von`natürlich auf viele Arten ändernWP_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
-
Toller Trick.Wenn Sienach dem Titel suchenmöchten,ersetzen Sie "post_title="% s "durch"post_title "wie" %%% 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
-
Wie würdeicheine Abfragemit Titel- und Taxonomiewert anstelle von Metawert durchführen?How would I perform a query with title and taxonomy value instead of meta value?
- 0
- 2018-10-13
- Jeff
-
@jeff Ich habeeinmalein Plugingeschrieben,um Abfragen zu kombinieren: https://github.com/birgire/wp-combine-queries.Auch [hier] (https://wordpress.stackexchange.com/questions/173628/wp-query-or-clause-for-tax-query-and-keywords/174221#174221) habeichmit der Suchegespielt (Titel,Auszug,Inhalt) oder Steuerabfrage.[Hier] (https://stackoverflow.com/a/22633399/2078474) Ich habeeine andere ähnliche Antwortgefunden,mit derichexperimentiert habe.Wir können auch zwei separate "WP_Query" schreiben und dann die resultierenden Post-IDs über den Eingabeparameter "post__in" sammeln und zueiner dritten "WP_Query" kombinieren (fallserforderlich und wenn die PHP-Reihenfolgenicht ausreicht).@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 Ichging mit der zweigetrennten Abfragen Route undes hatfunktioniert,danke.@birgire I went with the two separate queries route and it worked, thank you.
- 0
- 2018-10-13
- Jeff
-
@ Jefffroh zu hören,dass dasfür dichfunktioniert hat.@Jeff glad to hear that worked for you.
- 0
- 2018-10-13
- birgire
-
@biergie Dankefür diesetolle Lösung!Esfunktioniertgut,abermeine Suche liefert kein Ergebnis,wennich _meta_or_title + Metaabfrage + Steuerabfrage verwende.Wenn Sie Ihrenbenutzerdefinierten Filter verwenden undeine tax_query hinzufügen,ist das Element `$ sql ['where']` leer.Haben Sieeine Ahnung,wie Sie dasbeheben können?@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 Danke.Ich habeeseine Weilenichtmehrgetestet,aber Sie können sicherstellen,dass keine anderen Plugins/Codesbetroffen sind und z.miteingeschaltetem Debugging ausführen.@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 - Siefragen sichnur,ob Sie oderjemand darauf hinweisen könnten,wo Sie die $ args verwenden?Vielen Dank.@birgire - just wondering if you or someone could point out where you use the $args? thanks.
- 0
- 2020-06-29
- v3nt
-
Das $ q->get ('_meta_or_title')ist dasselbe wie $ args ['_meta_or_title'].The `$q->get( '_meta_or_title' )` is same as `$args['_meta_or_title']`.
- 0
- 2020-06-30
- birgire
Wiefrageichnachmeta_value odertitle ab?
Wennichmeta_values setze,
Sie werden automatisch als UND hinzugefügt.
Diese Suche wäre:
Ichbrauche