Wie kann ich Beiträge nur anzeigen, wenn meta_value nicht leer ist
-
-
Welche Version von WordPress verwenden Sie?Which version of WordPress are you using?
- 0
- 2011-03-02
- MikeSchinkel
-
@ MikeSchinkel - Sorry Mike,habe dasnichtgesehen - Esist 3.1.@MikeSchinkel - Sorry Mike, didn't see this — It's 3.1.
- 0
- 2011-03-02
- robalan
-
WP 3.5behebt dieses Problem undermöglicht die Verwendungeiner anderen VergleichsmethodeWP 3.5 fixes this problem and lets you use a different compare method
- 0
- 2017-12-06
- Erenor Paz
-
7 Antworten
- Stimmen
-
- 2011-03-02
Hallo @Rob:
Der Grund,warum Sienicht herausfinden können,wieesgeht,ist,dassesnichtmöglichist,zumindestnicht ohne auf SQL zurückzugreifen.Fügen Sie der Datei
functions.php
Ihres Themas Folgendes hinzu:add_filter('posts_where','yoursite_posts_where',10,2); function yoursite_posts_where($where,$query) { global $wpdb; $new_where = " TRIM(IFNULL({$wpdb->postmeta}.meta_value,''))<>'' "; if (empty($where)) $where = $new_where; else $where = "{$where} AND {$new_where}"; return $where; }
Wenn Siebenutzerdefinierte
'featured_image'
-Feldermit leeren Werten haben,werden diese oben herausgefiltert.Wenn Ihr Problemetwas anderesist,müssen wir sehen,wie Ihre Daten aussehen,umes zu lösen.Eine Sache,auf dieichneugierigbin;Wie haben Sie leere Wertefür
'featured_image'
erhalten?Die Admin-Benutzeroberflächein WordPress 3.1 versuchtnachbesten Kräften,leere Werteeinzugeben. Hoffe das hilft.Hi @Rob:
The reason you can't figure out how to do it is because it's not possible, at least not without resorting to SQL. Try adding the following to your theme's
functions.php
file:add_filter('posts_where','yoursite_posts_where',10,2); function yoursite_posts_where($where,$query) { global $wpdb; $new_where = " TRIM(IFNULL({$wpdb->postmeta}.meta_value,''))<>'' "; if (empty($where)) $where = $new_where; else $where = "{$where} AND {$new_where}"; return $where; }
If you have custom
'featured_image'
fields with empty values the above will filter them out. If you problem is something else, we'll have to see what your data looks like to solve it.One thing I'm curious about; how did you get empty values for
'featured_image'
? The admin UI in WordPress 3.1 does its best to keep you from entering empty values. Hope this helps.-
Gott sei Dank ... also sindesnichtnur wir.Dasistgut zu wissen,nehmeich an.Danke @MikeSchinkel - Das sollten sie wirklichin den Kodex aufnehmen ... Ichfreuemich auf die Erklärung.Vielen Dank!!Thank god... so it's not just us. That's good to know, I suppose. Thank you @MikeSchinkel - They really ought to put that in the codex... Looking forward to the explanation. Thanks!!
- 0
- 2011-03-02
- robalan
-
@Rob - Also habeichmein 3.0-Wissen verloren undjetzttesteichesin 3.1 undes scheint zufunktionieren.Ich habe zwei Beiträge undeinen miteinem benutzerdefinierten Feld "Featured_Image",und Ihre Abfragefunktionierteinwandfrei.Wasfindest du?Gibteseine Möglichkeit,dass Ihre Abfrage Beiträge lädt,dieein benutzerdefiniertes Feld "Featured_image" haben,bei denen der Wertfür dieses Feldjedoch leerist?@Rob - So I was going off my 3.0 knowledge and now I'm testing it in 3.1 and it does seem to work. I have two posts and one with a `featured_image` custom field and your query works fine. What are you finding? Is there a chance your query is loading posts that do have a `featured_image` custom field but where the value for that field is empty?
- 0
- 2011-03-02
- MikeSchinkel
-
@ MikeSchinkel - Kein Scherz?Ja,genau dasmachtes -jeder Beitrag hat das Feld Featured_image,sie sindeinfachnicht allefestgelegt.Es werden sowieso alle Beiträgegeladen.@MikeSchinkel - No kidding? Yes, that's exactly what it's doing — every post has the featured_image field, they're just not all set. It's loading up all posts anyway.
- 0
- 2011-03-02
- robalan
-
@Rob - Siehemeine aktualisierte Antwort.@Rob - See my updated answer.
- 0
- 2011-03-02
- MikeSchinkel
-
@ MikeSchinkel - Danke!Es scheintperfekt zufunktionieren,nachdem derpost_type auchin der Abfragefestgelegt wurde.Die leeren Werte sind zweckmäßig -nichtjeder Beitrag hat dieses Bild (undich weiß über das Miniaturbild des Beitrags Bescheid,esisteinfach keinegute Optionfür diese Site).Vielen Dank!@MikeSchinkel - Thank you! It seems to be working perfectly, after setting the post_type in the query also. The empty values are purposeful — not every post has this featured image (and I know about the post thumbnail, it's just not a good option for this site). Thanks so much!
- 0
- 2011-03-02
- robalan
-
@ MikeSchinkel - Ich stehe korrigiert da -esfunktioniertbei den Abfragen,dieich wollte,aberes verursacht überall 404.Einzelne Postseiten,Archive ...: o \ Irgendwelche Ideen?@MikeSchinkel - I stand corrected - it works on the queries that I wanted it to, but it's causing 404's everywhere else. Single post pages, archives... :o\ Any ideas?
- 0
- 2011-03-02
- robalan
-
Versuchen Sieim Codebeispielin Ihrer Frage oben,den Aufruf "add_filter ()" direkt vor Ihrem Aufruf "WP_Query ()" zuplatzieren,und setzen Sie dann "remove_filter ("posts_where "," yoursite_posts_where ");" kurzbevor Sie "wp_reset_query (" aufrufen)) `.In the code sample in your question above, try putting the `add_filter()` call just before your `WP_Query()` call, then put `remove_filter('posts_where','yoursite_posts_where');` just before you call `wp_reset_query()`.
- 0
- 2011-03-02
- Dougal Campbell
-
Dieser Code überprüft ALLEbenutzerdefinierten Felder,umfestzustellen,obeines davon leerist.Wasist,wennichmöchte,dass die Abfragenurnacheinem speziellen Feld sucht undprüft,ob dieses leerist,unabhängig davon,was die anderen sind?That code checks ALL custom fields to see if ANY of them are empty? What if I want the query to only check for one special field and see if that is empty no matter what the other ones are?
- 0
- 2011-05-31
- Jens Törnell
-
- 2011-03-04
Dies scheint zufunktionieren,um den Wertin die Abfrage zu übernehmen. Sie sind sichjedochnicht sicher,obgültige Ergebnisse abgerufen werden.
'meta_query' => array( array( 'key' => 'some_key', 'value' => array(''), 'compare' => 'NOT IN' ) )
Ich hatte keine Zeit,Felder zum Testen der Ergebnisse zuerstellen,aberich habe Abfragenbeobachtet,mit denenich heutegearbeitet habe,undfestgestellt,dass
NOT IN
gerneein leeres Arraynimmt.This seems to work for getting the value into the query, not sure about whether it pulls valid results though..
'meta_query' => array( array( 'key' => 'some_key', 'value' => array(''), 'compare' => 'NOT IN' ) )
Not had time to create fields to test the results, but i've been watching queries i've worked with today and noticed
NOT IN
will happily take an empty array.-
Ich weiß,dass dieseine alte Antwortist,aberfür diejenigen,die diesen Ansatz ausprobieren,funktioniertesmit "Vergleichen"=> "NICHT WIE" anstelle von "NICHT IN".I know this is an old answer, but for those trying this apparoach, it works with `'compare' => 'NOT LIKE'` instead of `'NOT IN`'
- 0
- 2012-07-11
- handsofaten
-
Sichereffizienter zubedienen!=Anstattnichtin odernicht zumögen.Gleich wie http://wordpress.stackexchange.com/a/10286/32863 (das sind Metaschlüssel,aber dasgleiche Prinzip)Surely more efficient to use != instead of not in or not like. Same as http://wordpress.stackexchange.com/a/10286/32863 (that is about meta keys, but same principle)
- 3
- 2015-09-09
- Adam
-
Noch sauberere Lösung: wie Adambereits sagte.Ist zu verwenden: '' value '=>' ', 'compare'=> '!=' `Even cleaner solution: like Adam stated already. Is to use: `'value' => '', 'compare' => '!=' `
- 5
- 2018-04-20
- Martijn van Hoof
-
Wenn Sie überprüfenmüssen,obes sichnicht umein leeres Array handelt ... `'value'=> array ('',array (),serialize (array ())),'compare'=> 'NOT IN'`If you need to check to make sure it's not an empty array... `'value' => array('', array(), serialize(array())), 'compare' => 'NOT IN'`
- 0
- 2018-08-14
- StephanieQ
-
- 2017-12-06
Diesisteine alte Frage,aberes scheint,dass Wordpress diese "fehlende Funktion"behoben hat: Laut Wordpress Codex kann wiefolgt auf Existenz (oder Nichtexistenz) des Metaschlüssels überprüft werden
'meta_query' => array( array( 'key' => 'featured_image', 'compare' => 'EXISTS', //or "NOT EXISTS", for non-existance of this key ) )
Diesist ab WP verfügbar>=3.5.
This is an old question, but it seems Wordpress has fixed this "missing feature": now, according to Wordpress Codex is possible to check for existence (or non-existence) of the meta key, like this
'meta_query' => array( array( 'key' => 'featured_image', 'compare' => 'EXISTS', //or "NOT EXISTS", for non-existance of this key ) )
This is available as of WP >= 3.5.
-
`EXISTS` zeigt leere Werte an,nach denen wir hiernicht suchen.Diebeste Lösungist "Wert"=> "," Vergleichen "=>"!=",Soweitmeine Testsgehen.`EXISTS` will show empty values which is not what we're after here. The best solution is `'value' => '', 'compare' => '!=' ` as far as my testing goes.
- 0
- 2019-08-09
- Ben
-
@ Ben Genau das hat das OP versucht,aber ohne Erfolg,so scheintes.Ich habemeine Lösung hinzugefügt,um sicherzustellen,dass Passanten,dienacheiner Methode zum Abrufen von Posts suchen,die auf der Existenz vonmeta_keybasieren,diesefinden können.Da der Werteines Metas "etwas","leer" oder "null" sein kann (falls das Metanicht vorhandenist),besteht die wahrscheinlichbeste Lösung darin,diebeiden Optionenmit einer "UND" -Relation zusammenzuführen@Ben That's exactly what the OP tried, but without any success, it seems. I added my solution to make sure people passing by searching for a method to retrieve posts based on existence of meta_key could find it. Since the value of a meta can be "something", "empty" or "null" (in case the meta doesn't exist), probably the best solution would be to merge the two options with an "AND" relation
- 2
- 2019-08-09
- Erenor Paz
-
- 2018-01-10
Diesist die Abfrage,diefürmichfunktioniert hat.Sehr ähnlich dem Vergleichin der Antwort vont31os aus dem Jahr 2011,aber da der Meta-Schlüssel/Wertnureine einfache Textzeichenfolgeist,musses sichnicht umein Meta_Query-Array handeln.
$args = array( 'posts_per_page' => 5,//replaced 'showposts' in version 2.1 'meta_key' => 'featured_image', 'meta_value' => array(''), 'meta_compare' => 'NOT IN' );
Verwenden Sie ausirgendeinem Grund 'meta_value'=> '' und 'meta_compare'=> '!=' oder 'meta_compare'=> 'NOTLIKE ' hatimmernoch alle Beiträgefürmich abgerufen,aberes hat wahrscheinlichetwas damit zutun,dassichmeinen Metawertmit dem ACF-Plugin (Advanced Custom Fields)erstellt habe.
Weitere Informationen zubenutzerdefinierten Feldparameternfinden Sieim Codex .
This is the query that worked for me. Very similar to the comparison in t31os's answer from 2011, but because the meta key/value is just a simple textstring, it doesn't need to be a meta_query array.
$args = array( 'posts_per_page' => 5,//replaced 'showposts' in version 2.1 'meta_key' => 'featured_image', 'meta_value' => array(''), 'meta_compare' => 'NOT IN' );
For whatever reason, using 'meta_value' => '' and 'meta_compare' => '!=' or 'meta_compare' => 'NOT LIKE' still pulled all posts for me, but it probably has something to do with the fact that I created my meta value using the Advanced Custom Fields (ACF) plugin.
-
- 2011-03-03
Diesistin WP 3.2-alphabehoben:
This is fixed in WP 3.2-alpha:
-
- 2014-01-24
Vermisseichetwas?
<?php $args = array( 'post_type' => 'post', 'posts_per_page' => -1, 'meta_key' => "featured_image" ); $the_query = new WP_Query( $args ); ?>
Wird dasnicht so sein?
Am i missing something?
<?php $args = array( 'post_type' => 'post', 'posts_per_page' => -1, 'meta_key' => "featured_image" ); $the_query = new WP_Query( $args ); ?>
Won't that do it?
-
Bearbeiten: aus dem Codex: `` `$ query=new WP_Query ('meta_key=Featured_image');` `` hier schauen: http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_ParametersEdit: from the codex: ```$query = new WP_Query( 'meta_key=featured_image' );``` look here:http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters
- 0
- 2014-01-24
- Infinity Media
-
Erstens können Siejederzeiteine Frage oder Antwort [bearbeiten],anstatteinen Kommentar hinzuzufügen.Zweitens: Missbrauche keine Antworten anstelle von Kommentaren.First, you can always [edit] a question or answer instead of adding a comment. Second: Don't **misuse** answers instead of comments.
- 0
- 2014-01-25
- kaiser
-
Wenn Sieeine neue Frage haben,stellen Sie diesebitte,indem Sie auf die Schaltfläche [Frage stellen] (http://wordpress.stackexchange.com/questions/ask) klicken.Fügen Sieeinen Link zu dieser Frage hinzu,wenn dies zur Bereitstellung des Kontextsbeiträgt.If you have a new question, please ask it by clicking the [Ask Question](http://wordpress.stackexchange.com/questions/ask) button. Include a link to this question if it helps provide context.
- 0
- 2014-01-25
- kaiser
-
@kaiser - scheintmir,als hätteergeantwortet.Erfragtnicht,ob sein Codegültigist,aberichnehme an,dasser die Frage sarkastischmit dembeantwortet,von demerglaubt,dassesfunktionieren wird.@kaiser - seems to me like he was answering. He's not asking if his code is valid, but I suppose sort of sarcastically answering the question with what he believes will work.
- 0
- 2016-09-05
- Nathan
-
@ Nathan Diesist,was Kommentare sind.@Nathan This is what comments are for.
- 0
- 2016-09-05
- kaiser
-
@kaiser,Kommentare sindfür das Posten von Antworten und Code?Wiepostest du Codein einem Kommentar?@kaiser, Comments are for posting answers and code? How do you post code in a comment?
- 0
- 2016-09-05
- Nathan
-
@ Nathan Ichbezogmich auf den sarkastischen Teil der Antwort.Der Code sollteeine Antwort sein -einschließlicheiniger Erklärungen.@Nathan I was referring to the sarcastic part of the answer. The code should be an answer – including some explanation.
- 0
- 2016-09-05
- kaiser
-
Esgabeinen Fehlerin WordPress,aberjetztisterbehoben.Diesist der richtige Weg.There was a bug in WordPress but now it's fixed. This is the correct way to do it.
- 0
- 2016-12-04
- Ryan Taylor
-
Drei Leute habenbereits versucht,das zu lösen,und wir kommen auf Null. Ichmöchtenur Beiträge anzeigen,dieeinen Wertim meta_key 'Featured_image' haben.
Also ... wenn 'Featured_image'nicht leerist,zeige den Beitrag. Hierist der Code:
Wir habenbuchstäblichjedeerdenkliche Kombination ausprobiert,die veraltetenmeta_ * -Optionen,query_posts,get_posts anstelle von WP_Query ... Nichts. Die select-Anweisung wurdegedruckt,es wird kein Metawertfeld angezeigt. Esexistiert -für die Beiträge (fürjeden Beitrag) undesexistiertin der Datenbank.
Wir habengeradejeden Beitrag zu diesem Themagesehen,einschließlich derfolgenden:
query_posts und Ergebnissenur anzeigen,wennein benutzerdefiniertes Feldnicht leerist
http://scribu.net/wordpress/advanced-metadata-queries.html
Zilch. Bitte helfen Sie ...