问题描述

有三个人已经试图解决这个问题,而且我们没有了。我想只显示在 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。