Comment puis-je afficher les messages uniquement si meta_value n'est pas vide
-
-
Quelle version de WordPress utilisez-vous?Which version of WordPress are you using?
- 0
- 2011-03-02
- MikeSchinkel
-
@MikeSchinkel - Désolé Mike,je n'aipas vu ça - C'est 3.1.@MikeSchinkel - Sorry Mike, didn't see this — It's 3.1.
- 0
- 2011-03-02
- robalan
-
WP 3.5 résout ceproblèmeet vouspermet d'utiliser uneméthode de comparaison différenteWP 3.5 fixes this problem and lets you use a different compare method
- 0
- 2017-12-06
- Erenor Paz
-
7 réponses
- votes
-
- 2011-03-02
Bonjour @Rob:
La raisonpour laquelle vousne pouvezpas comprendre comment lefaireest que cen'estpaspossible,dumoinspas sans recourir à SQL.Essayez d'ajouter ce qui suit aufichier
functions.php
de votrethème: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; }
Si vous avez des champs
'featured_image'
personnalisés avec des valeurs vides,ce quiprécède lesfiltrera.Si votreproblèmeest autre chose,nous devrons voir à quoi ressemblent vos donnéespour le résoudre.Une chose quim'intéresse;comment avez-vous obtenu des valeurs videspour
'featured_image'
?L'interface utilisateur d'administration de WordPress 3.1fait de sonmieuxpour vousempêcher de saisir des valeurs vides. J'espère que cela vous aidera.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.-
Dieumerci ... donc cen'estpas quenous.C'estbon à savoir,je suppose.Merci @MikeSchinkel - Ils devraient vraimentmettre cela dans le codex ... Dans l'attente de l'explication.Merci!!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 - J'étais doncparti demes connaissances 3.0et maintenantje lestesteen 3.1et cela semblefonctionner.J'ai deux articleset un avec un champpersonnalisé `vedette_image`et votre requêtefonctionnebien.Quetrouvez-vous?Y a-t-il une chance que votre requête charge des articles qui ont un champpersonnalisé `vedette_image`mais où la valeur de ce champest vide?@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 - Jene plaisantepas?Oui,c'estexactement ce qu'ilfait - chaquemessage a le champ vedette_image,ilsne sonttout simplementpastous définis.Il charge detoutefaçontous lesmessages.@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 - Voirma réponsemise àjour.@Rob - See my updated answer.
- 0
- 2011-03-02
- MikeSchinkel
-
@MikeSchinkel - Merci!Cela semblefonctionnerparfaitement,après avoir défini lepost_type dans la requête également.Les valeurs vides sont utiles -tous les articlesn'ontpas cetteimageen vedette (etje connais la vignette de l'article,cen'esttout simplementpas unebonne optionpour ce site).Mercibeaucoup!@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 -je suis corrigé - celafonctionne sur les requêtes queje voulais,mais cela cause des 404partout ailleurs.Pages depublication unique,archives ...: o \ Desidées?@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
-
Dans l'exemple de code de votre question ci-dessus,essayez demettre l'appel `add_filter ()`juste avant votre appel `WP_Query ()`,puismettez `remove_filter ('posts_where','yoursite_posts_where');`juste avant d'appeler `wp_reset_query () ».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
-
Ce code vérifie TOUS les champspersonnaliséspour voir si l'un d'entreeuxest vide?Quefaire sije veux que la requête vérifie uniquement un champ spécialet voit si celui-ciest vide,quels que soient les autres?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
Cela semblefonctionnerpour obtenir la valeur dans la requête,maisje ne saispas sielleextrait des résultats valides.
'meta_query' => array( array( 'key' => 'some_key', 'value' => array(''), 'compare' => 'NOT IN' ) )
Jen'aipaseu letemps de créer des champspourtester les résultats,maisj'ai regardé les requêtes avec lesquellesj'aitravaillé aujourd'huiet j'ai remarqué que
NOT IN
prendrait volontiers untableau vide.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.-
Je sais que c'est une vieille réponse,maispour ceux quiessaient cette approche,celafonctionne avec `` compare '=>' NOT LIKE'` au lieu de `` NOT 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
-
Sûrementplusefficace à utiliser!=Au lieu depas dans oupas comme.Identique à http://wordpress.stackexchange.com/a/10286/32863 (il s'agit de clésméta,maismêmeprincipe)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
-
Solutionencorepluspropre: comme Adam l'a déjà déclaré.Est d'utiliser: `` 'value'=> '', 'compare'=> '!=' ``Even cleaner solution: like Adam stated already. Is to use: `'value' => '', 'compare' => '!=' `
- 5
- 2018-04-20
- Martijn van Hoof
-
Si vous devez vérifier que cen'estpas untableau vide ... `` '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
C'est une vieille question,maisil semble que Wordpress ait corrigé cette "fonctionnalitémanquante":maintenant,selon Wordpress Codex estpossible de vérifier l'existence (ou lanon-existence) de la cléméta,comme ceci
'meta_query' => array( array( 'key' => 'featured_image', 'compare' => 'EXISTS', //or "NOT EXISTS", for non-existance of this key ) )
Ceciest disponible àpartir de WP>=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` affichera des valeurs vides,ce quin'estpas ce quenous recherchonsici.Lameilleure solutionest `` 'value'=> '','compare'=> '!=' 'En ce qui concernemestests.`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 C'estexactement ce que l'OP aessayé,mais sans succès,semble-t-il.J'ai ajoutéma solutionpourm'assurer que lespersonnespassanten recherchant uneméthodepour récupérer lesmessagesen fonction de l'existence demeta_keypuissent latrouver.Puisque la valeur d'unemétapeut être «quelque chose»,«vide» ou «nul» (au cas où lamétan'existepas),lameilleure solution seraitprobablement defusionner les deux options avec une relation «ET»@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
C'est la requête qui afonctionnépourmoi.Très similaire à la comparaison de la réponse det31os de 2011,mais comme laméta clé/valeurn'est qu'une simple chaîne detexte,iln'estpasnécessaire qu'elle soit untableaumeta_query.
$args = array( 'posts_per_page' => 5,//replaced 'showposts' in version 2.1 'meta_key' => 'featured_image', 'meta_value' => array(''), 'meta_compare' => 'NOT IN' );
Pour une raison quelconque,en utilisant 'meta_value'=> '' et 'meta_compare'=> '!=' ou 'meta_compare'=> 'NONLIKE ' atoujourstirétous les articlespourmoi,mais cela aprobablement quelque chose à voir avec lefait quej'ai crééma valeurmétaen utilisant leplugin Advanced Custom Fields (ACF).
En savoirplus sur lesparamètres de champpersonnalisés dans le 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
Ceciest corrigé dans WP 3.2-alpha:
This is fixed in WP 3.2-alpha:
-
- 2014-01-24
Suis-jeen train demanquer quelque chose?
<?php $args = array( 'post_type' => 'post', 'posts_per_page' => -1, 'meta_key' => "featured_image" ); $the_query = new WP_Query( $args ); ?>
Est-ce que çane vapas?
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?
-
Edit: du codex: `` `` $ query=new WP_Query ('meta_key=features_image'); `` `` regardezici: 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
-
Tout d'abord,vouspouveztoujours [modifier] une question ou une réponse au lieu d'ajouter un commentaire.Deuxièmement:n'utilisezpas **mal ** les réponses au lieu de commentairesFirst, 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
-
Si vous avez unenouvelle question,posez-laen cliquant sur lebouton [Poser une question] (http://wordpress.stackexchange.com/questions/ask).Incluez un lien vers cette question si celapermet defournir un contexte.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 -ilme semble qu'il répondait.Ilne demandepas si son codeest valide,maisje suppose qu'il réponden quelque sorte sarcastiquement à la question avec ce qu'il croitfonctionner.@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 C'est à cela que servent les commentaires.@Nathan This is what comments are for.
- 0
- 2016-09-05
- kaiser
-
@kaiser,les commentaires sontpourposter des réponseset du code?Commentpubliez-vous un code dans un commentaire?@kaiser, Comments are for posting answers and code? How do you post code in a comment?
- 0
- 2016-09-05
- Nathan
-
@Nathan Jefaisais référence à lapartie sarcastique de la réponse.Le code doit être une réponse - y compris uneexplication.@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
-
Il y avait unbogue dans WordPressmaismaintenantilest corrigé.C'est labonnefaçon deprocéder.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
-
Troispersonnes ont déjàessayé de résoudre ceproblème,et nousen arrivons à zéro. Je souhaiten'afficher que lesmessages qui ont une valeur dans laméta_key 'vedette_image'.
Donc ... si 'vedette_image'n'estpas vide,affichez lemessage. Voici le code:
Nous avonsessayé littéralementtoutes les combinaisons auxquellesnouspouvonspenser,les options obsolètesmeta_ *,query_posts,get_posts,au lieu de WP_Query ... Rien. Imprimé l'instruction de sélection,aucun champ deméta valeurne s'affiche Ilexiste -pour les articles (pour chaque article)et ilexiste dans labase de données.
Nous avons vutous les articles sur le sujeten cemoment,y compris ceux-ci:
query_postset n'afficher les résultats que si un champpersonnalisén'estpas vide
http://scribu.net/wordpress/advanced-metadata-queries.html
Zilch. Veuillez aider ...