META_QUERY在GET_POSTS数组中工作吗?

时间:2011-03-01 作者:robalan

我似乎无法做到这一点-我正在尝试显示meta“featured\\u image”值设置为任意值的帖子。据我所知,它设置正确,但我有点不知所措。以下是我所拥有的:

 <ul>
  <?php
    global $post;
    $myposts = get_posts(array(
      \'showposts\' => 5,
      \'offset\' => 7,
      \'meta_query\' => array(
        array(
          \'key\' => \'featured_image\',
          \'value\' => \'\',
          \'compare\' => \'NOT LIKE\'
          )
        )
    ));
    foreach($myposts as $post) {
      setup_postdata($post);
      $meta = get_post_meta($post->ID, \'\');
  ?>
    <li>
      <a href=""><img src="<?php bloginfo(\'template_directory\'); ?>/timthumb.php?src=<?php if (isset($meta[\'featured_image\'][0]) && !empty($meta[\'featured_image\'][0])): echo $meta[\'featured_image\'][0]; else: ?>/wp-content/themes/SSv2011/images/review-default.gif<?php endif; ?>&w=84&h=60" alt="" /></a>
    </li>
  <?php unset($myposts); ?>
  <?php } ?>
  </ul>
已更新以显示整个查询。有什么想法吗?:\\

更新到WP\\u Query,我会让帖子出现,但它们并不是唯一在“featured\\u image”中包含内容的帖子。有什么想法吗?新查询:

      <?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();
      ?>

2 个回复
SO网友:robalan
SO网友:t31os

首先,您的get_post_meta 电话没有钥匙,不是吗get_post_meta( $post->ID, \'featured_image\', true )get_post_meta( $post->ID, \'featured_image\', false ) 如果需要多个值。

此外,您正在处理get_post_meta 在这里调用,就像它有一个值数组一样$meta[\'featured_image\'][0], 然而,您还没有指定密钥,这意味着在该点上不太可能包含任何内容。

我怀疑钥匙在get_post_meta 通话是主要问题。

另外,我建议回到!= 操作人员NOT LIKE 不太适合空字符串比较,想象一下SQL的外观。

WHERE meta_value NOT LIKE \'%%\'
其中,使用不等于比较,我们得到。。

WHERE meta_value != \'\'
。。这(我相信)正是我们想要检查的,一个值不是空值的元字段。

结束