Como posso mostrar posts apenas se meta_value não estiver vazio
-
-
Qual versão do WordPress vocêestá usando?Which version of WordPress are you using?
- 0
- 2011-03-02
- MikeSchinkel
-
@Mikeschinkel - desculpe Mike,não viuisso - é 3.1.@MikeSchinkel - Sorry Mike, didn't see this — It's 3.1.
- 0
- 2011-03-02
- robalan
-
WP 3.5 corrigeesteproblemae permite que você use ummétodo de comparação diferenteWP 3.5 fixes this problem and lets you use a different compare method
- 0
- 2017-12-06
- Erenor Paz
-
7 respostas
- votos
-
- 2011-03-02
hi @rob:
A razãopela qual vocênão consegue descobrir comofazerisso éporquenão épossível,pelomenosnão sem recorrer ao SQL.Tente adicionar o seguintepara o arquivo
add_filter ('posts_where','yoursite_posts_where',10,2); função yoursite_posts_where ($ where,$ consulta) { Global $ WPDB; $new_where="guarnição (IFNULL ({$ wpdb- >posteta} .meta_value,'')) & lt; > '' '; Se (vazio ($ onde)) $ onde=$new_where; outro $ where="{$ where}e {$new_where}"; retornar $ onde; }
Se vocêtiverpersonalizado
'featured_image'
campos com valores vazios,o acimairáfiltrá-los.Se você éproblema é outra coisa,teremos que ver como são seus dadospara resolvê-lo.Uma coisa queestou curiosa sobre;Como você recebeu valores vaziospara
'featured_image'
?Ainterface do usuáriono WordPress 3.1 émelhorparaevitar que você digite valores vazios. Espero queisso ajude.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.-
Graças a Deus ...entãonão é apenasnós.Isso ébom saber,suponho.Obrigado @Mikeschinkel - Eles realmente deveriam colocarissono códice ... ansiosopara aexplicação.Obrigado!!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 - Entãoeuestava saindo domeu conhecimento 3.0e agoraestoutestandoem 3.1e parecefuncionar.Eutenho doispostse um com um campopersonalizado do `dofeatured_image`e sua consultafuncionabem.O que vocêestáencontrando?Existe uma chance que sua consultaesteja carregandoposts quetenham um campopersonalizado do `Destreed_image` Mas onde o valor desse campoestá vazio?@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 - Sembrincadeira?Sim,isso éexatamente o queestáfazendo - cadaposttem o campo dofeatured_image,eles simplesmentenão sãotodos definidos.Está carregandotodos osposts de qualquermaneira.@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 - Vejaminha resposta atualizada.@Rob - See my updated answer.
- 0
- 2011-03-02
- MikeSchinkel
-
@Mikeschinkel - Obrigado!Pareceestartrabalhandoperfeitamente,depois de definir opost_typena consultatambém.Os valores vazios sãopropositais -nem todoposttem estaimagemem destaque (eeu sei sobre aminiaturaposterior,não é apenas umaboa opçãoparaeste site).Muito obrigado!@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 - Euestou corrigido -funcionanas consultas queeu queria,masestá causando 404em qualquer outro lugar.Únicopóspáginas,arquivos ...: o \ qualquerideia?@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
-
Na amostra de códigoem suapergunta acima,tente colocar a chamada `add_filter ()`] logo antes de sua chamada `wp_query () 'chamada,em seguida,coloque` remove_filter ('posts_where ',' yoursite_posts_where '); `logo antes de ligar` 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
-
Esse código verificatodos os campospersonalizadospara ver se algum delesestá vazio?E seeu quiser que a consulta apenas verifique um campoespeciale veja seestá vazio,nãoimporta o que os outros são?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
Issoparecefuncionarpara obter o valorna consulta,nãotenho certeza seelepuxa resultados válidosembora ..
'meta_query'=>variedade( variedade( 'Key'=>'some_key', 'valor'=>variedade(''), 'comparar'=>'NÃO EM' ) )
Nãotevetempopara criar camposparatestar os resultados,maseutenho assistido consultas quetrabalhei hojee notei
nãoem vaifelizmentetirar umamatriz vazia. 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.-
Eu sei queesta é uma resposta antiga,maspara aqueles quetentamestejo,elefunciona com 'comparar'=> 'nãogosto'`em vez de `'nãono '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
-
Certamentemaiseficientepara usar!=Em vez denãoem ounão.Omesmo que http://wordpress.stackexchange.com/a/10286/32863 (isto é,sobremeta de chaves,masmesmoprincípio)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
-
Mesmo a soluçãomais limpa: como Adamjáfoi dito.É usar: `'valor'=> '', 'comparar'=> '!=' `Even cleaner solution: like Adam stated already. Is to use: `'value' => '', 'compare' => '!=' `
- 5
- 2018-04-20
- Martijn van Hoof
-
Se vocêprecisar verificar senão é umamatriz vazia ... `'Value'=> Array ('',array (),serialize (matray ())),'comparar'=> 'nãoin'`'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
Esta é umapergunta antiga,masparece que o WordPress consertoueste "recurso ausente": agora,de acordo com O WordPress Codex épossível verificar se háexistência (ouinexistência) dameta-chave,comoesta
'meta_query' => array( array( 'key' => 'featured_image', 'compare' => 'EXISTS', //or "NOT EXISTS", for non-existance of this key ) )
Issoestá disponível apartir do 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.
-
"Existe"mostrará valores vazios quenão é o queestamos depois daqui.Amelhor solução é `'valor'=> '' ',' comparar '=>'!='` No que diz respeito aomeuteste.`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 Isso éexatamente o que o optentou,mas sem sucesso,parece.Eu adicioneiminha soluçãoparagarantir que aspessoas quepassamprocurandopor ummétodopara recuperarposts combasenaexistência de Meta_Keypoderiamencontrá-lo.Como o valor de ummetapode ser "algo","vazio" ou "nulo" (no caso de ametanãoexistir),provavelmente amelhor solução seriafundir as duas opções com uma relação "e"@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
Esta é a consulta quefuncionouparamim.Muito semelhante à comparaçãona resposta de T31os de 2011,masporque ameta-chave/valor é apenas um simplestextstring,nãoprecisa ser umamatriz Meta_Query.
$args = array( 'posts_per_page' => 5,//replaced 'showposts' in version 2.1 'meta_key' => 'featured_image', 'meta_value' => array(''), 'meta_compare' => 'NOT IN' );
por qualquermotivo,usando 'meta_value'=> '' e 'meta_compare'=> '!=' ou 'meta_compare'=> 'nãoComo ' aindapuxoutodas aspostagensparamim,masprovavelmentetem algo a ver com ofato de queeu crieimeumeta valor usando oplugin avançado de campospersonalizados (ACF).
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
Isso é corrigidono WP 3.2-Alpha:
.This is fixed in WP 3.2-alpha:
-
- 2014-01-24
Estouperdendo alguma coisa?
<?php $args = array( 'post_type' => 'post', 'posts_per_page' => -1, 'meta_key' => "featured_image" ); $the_query = new WP_Query( $args ); ?>
Issonão vaifazerisso?
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?
-
Editar: do códice: `` `` `$ query=new wp_query ('meta_key=featured_image');` `` `` `` `'` `` ``' look aqui: 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
-
Primeiro,você semprepode [editar] umapergunta ou respostaem vez de adicionar um comentário.Segundo: Nãofaça usoindevido ** respostasem vez de comentários.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
-
Se vocêtiver umanovapergunta,pergunte-se clicandona [Pergunta] (http://wordpress.stackexchange.com/Questions/ask).Inclua um linkparaestapergunta,se ajudar afornecer contexto.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 -parece-me como seeleestivesse respondendo.Elenãoestáperguntando se seu código é válido,maseu suponho quetipo de resposta sarcasticamente apergunta com o queele acreditafuncionar.@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 Éisso que os comentários sãopara.@Nathan This is what comments are for.
- 0
- 2016-09-05
- kaiser
-
@kaiser,comentários sãoparapostar respostase código?Como vocêpublica códigoem um comentário?@kaiser, Comments are for posting answers and code? How do you post code in a comment?
- 0
- 2016-09-05
- Nathan
-
@Nathan Euestavame referindo àparte sarcástica da resposta.O código deve ser uma resposta -incluindo algumaexplicação.@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
-
Havia umbugno WordPress,mas agora é corrigido.Esta é amaneira correta defazê-lo.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
-
Trêspessoasjátentaram resolverisso,e estamos chegandonil. Eu queromostrar apenasposts quetêm um valorno Meta_Key 'Destreed_Image'.
Então ... Se 'Feated_Image'nãoestiver vazio,mostre opost. Aquiestá o código:
Nóstentamos literalmente cada combinação quepossamospensar,as opções demeta_ * deprecadas,query_posts,get_posts,em vez de wp_query ...nada. Impresso ainstrução SELECT,nenhum campo de valormetaestá sendoexibido. Existe -para osposts (para cadapostagem)e existenobanco de dados.
Nós vimos cadapost láforanotópico agora,incluindoestes:
Query_postse apenasmostrar resultados se um campopersonalizadonãoestiver vazio
http://scribu.net/wordpress/advanced-metadata-queries.html
zilch. Porfavor,ajude ...