问题描述
有三个人已经试图解决这个问题,而且我们没有了。我想只显示在 meta_key ‘featured_image’ 中有值的帖子。
所以… 如果’featured_image’ 不为空,显示该帖子。以下是代码:
<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>
我们已经尝试了我们可以想到的每个组合,已经弃用的 meta_ *选项,query_posts,get_posts,而不是 WP_Query … 没有。打印 select 语句,没有显示元值字段。它存在 – 对于帖子 (对于每个帖子),并且它存在于数据库中。
我们已经看到了关于这个话题的每一篇文章,其中包括:
query_posts and only show results if a custom field is not empty
http://scribu.net/wordpress/advanced-metadata-queries.html
小人物。请帮忙…
最佳解决方案
嗨 @Rob:
你无法弄清楚如何做的原因是因为这是不可能的,至少不是没有诉诸于 SQL 。尝试将以下内容添加到您的主题的 functions.php
文件中:
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;
}
如果您有自定义'featured_image'
字段为空值,则上面将过滤掉它们。如果你的问题是别的,我们必须看看你的数据是如何解决的。
有一件事我很好奇你如何获得'featured_image'
的空值? WordPress 3.1 中的管理界面尽可能避免您输入空值。希望这可以帮助。
次佳解决方案
这似乎有助于获取查询的价值,不知道是否拉取有效的结果..
'meta_query' => array(
array(
'key' => 'some_key',
'value' => array(''),
'compare' => 'NOT IN'
)
)
没有时间创建字段来测试结果,但是我一直在观看我今天所使用的查询,并注意到 NOT IN
将乐意采取一个空数组。
第三种解决方案
这在 WP 3.2-alpha 中是固定的:
http://core.trac.wordpress.org/ticket/15292
第四种方案
我错过了什么吗?
<?php
$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'meta_key' => "featured_image"
);
$the_query = new WP_Query( $args );
?>
不会这样吗?
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。