Três pessoas já tentaram resolver isso, e estamos chegando a zero. Quero mostrar apenas postagens que tenham um valor na meta_key 'featured_image'.
Então ... se 'featured_image' não estiver vazio, mostre a postagem. Aqui está o código:
<ul>
<?php
$args = array(
'showposts' => 5,
'meta_query' => array(
array(
'key' => 'featured_image',
'value' => '',
'compare' => '!='
)
)
);
$ft_pagination = new WP_Query( $args );
?>
<?php while ($ft_pagination->have_posts()) : $ft_pagination->the_post(); ?>
<?php $ftimage = get_post_meta(get_the_id(), 'featured_image', TRUE); ?>
<li>
<article>
<a href="">
<?php if ($ftimage): ?>
<img src="<?php bloginfo('template_directory'); ?>/timthumb.php?src=<?php echo $ftimage; ?>&w=84&h=60" alt="" />
<?php else: ?>
<img src="<?php bloginfo('template_directory'); ?>/timthumb.php?src=/wp-content/themes/ssv/images/review-default.gif&w=84&h=60" alt="" />
<?php endif; ?>
</a>
</article>
</li>
<?php
endwhile;
wp_reset_query();
?>
</ul>
Tentamos literalmente todas as combinações em que podemos pensar, as opções meta_ * obsoletas, query_posts, get_posts, em vez de WP_Query ... Nada. Imprimiu a instrução select, nenhum campo de meta-valor está sendo exibido. Existe - para as postagens (para todas as postagens) e existe no banco de dados.
Já vimos todos os posts sobre o assunto no momento, incluindo:
query_posts e só mostra resultados se um campo personalizado não estiver vazio
http://scribu.net/wordpress/advanced-metadata-queries.html
Zilch. Por favor ajude...
Respostas:
Olá @Rob:
A razão pela qual você não consegue descobrir como fazer isso é porque não é possível, pelo menos não sem recorrer ao SQL. Tente adicionar o seguinte ao
functions.php
arquivo do seu tema :Se você tiver
'featured_image'
campos personalizados com valores vazios, os filtros acima serão filtrados. Se o seu problema for outra coisa, teremos que ver como são os seus dados para resolvê-los.Uma coisa que me interessa; como você conseguiu valores vazios
'featured_image'
? A UI do administrador no WordPress 3.1 faz o possível para impedir que você insira valores vazios. Espero que isto ajude.fonte
featured_image
campo personalizado, e sua consulta funciona bem. O que você está achando? Existe uma chance de sua consulta estar carregando postagens que possuem umfeatured_image
campo personalizado, mas onde o valor desse campo está vazio?Isso parece funcionar para obter o valor na consulta, mas não tenho certeza se ele obtém resultados válidos.
Não tive tempo para criar campos para testar os resultados, mas tenho assistido a consultas com as quais trabalhei hoje e percebi
NOT IN
que, felizmente, terá uma matriz vazia.fonte
'compare' => 'NOT LIKE'
vez de'NOT IN
'#'value' => '', 'compare' => '!='
'value' => array('', array(), serialize(array())), 'compare' => 'NOT IN'
Esta é uma pergunta antiga, mas parece que o Wordpress corrigiu esse "recurso ausente": agora, de acordo com o Wordpress Codex, é possível verificar a existência (ou não) da meta-chave, como esta
Está disponível no WP> = 3.5.
fonte
EXISTS
mostrará valores vazios que não é o que procuramos aqui. A melhor solução é'value' => '', 'compare' => '!='
tanto quanto meus testes.Esta é a consulta que funcionou para mim. Muito semelhante à comparação na resposta do t31os de 2011, mas como a meta-chave / valor é apenas uma string de texto simples, ela não precisa ser uma matriz de meta_query.
Por qualquer motivo, usar 'meta_value' => '' e 'meta_compare' => '! =' Ou 'meta_compare' => 'NOT LIKE' ainda atrai todas as postagens para mim, mas provavelmente tem algo a ver com o fato de que Criei meu meta-valor usando o plug-in Advanced Custom Fields (ACF).
Leia mais sobre parâmetros de campo personalizados no codex .
fonte
Isso foi corrigido no WP 3.2-alpha:
http://core.trac.wordpress.org/ticket/15292
fonte
Estou esquecendo de algo?
Isso não fará?
fonte
$query = new WP_Query( 'meta_key=featured_image' );
veja aqui: codex.wordpress.org/Class_Reference/…um forro ftw.
fonte