Php 显示同一数组中具有不同元数据的多个项

Php 显示同一数组中具有不同元数据的多个项,php,arrays,wordpress,Php,Arrays,Wordpress,在Wordpress中,我试图在循环中显示数据。在这个特定的循环中,我希望包括具有以下元数据的所有项: red blue green 我有以下数组: $posts = get_posts(array( 'numberposts' => -1, 'post_type' => 'people', 'meta_key' => 'role', 'meta_compare' => '=', 'orderby' => 'ti

在Wordpress中,我试图在循环中显示数据。在这个特定的循环中,我希望包括具有以下元数据的所有项:

red
blue
green
我有以下数组:

      $posts = get_posts(array(
    'numberposts' => -1,
    'post_type' => 'people',
    'meta_key' => 'role',
    'meta_compare' => '=',
    'orderby' => 'title',
    'order' => 'ASC',
    'meta_value' => 'red',
    )
  );
这将显示红色的项目。但是如何添加到数组中,使其显示所有项

功能代码如下:

      if($posts)
          {     ?>

        <h3 class="col-md-12">Red & Blue & Green</h3>
    <?php
            foreach($posts as $post)
            {
              ?>           
                <div class="thumb-frame col-md-3 col-xs-6 pull-right">
                  <a href="#detail<?php echo get_the_id(); ?>" onClick="showDetail('<?php echo get_the_id(); ?>');">
                    <figure class="thumb">
                      <img class="img-responsive" src="<?php the_field('portrait_image');?>" alt="<?php the_title(); ?>"/>
                      <figcaption>
                        <span><?php the_title(); ?></span>
                      </figcaption>
                    </figure>
                  </a>
                </div>
              <?php
      $num++;
    }        
          }      
        ?>
if($posts)
{     ?>
红蓝绿

我是PHP新手,不确定语法,但是否应该有OR运算符,或者嵌套数组?

我不是WordPress开发人员,但我猜您可以通过从数据库检索3组帖子来获得这些帖子:

$posts = get_posts(array(
    'numberposts' => -1,
    'post_type' => 'people',
    'meta_key' => 'role',
    'meta_compare' => '=',
    'orderby' => 'title',
    'order' => 'ASC',
    'meta_value' => 'red',
));

$posts += get_posts(array(
    'numberposts' => -1,
    'post_type' => 'people',
    'meta_key' => 'role',
    'meta_compare' => '=',
    'orderby' => 'title',
    'order' => 'ASC',
    'meta_value' => 'blue',
));

$posts += get_posts(array(
    'numberposts' => -1,
    'post_type' => 'people',
    'meta_key' => 'role',
    'meta_compare' => '=',
    'orderby' => 'title',
    'order' => 'ASC',
    'meta_value' => 'green',
));
现在,
$posts
数组将包含3个结果的并集。

尝试

$posts = get_posts(array(
    'numberposts' => -1,
    'post_type' => 'people',
    'orderby' => 'title',
    'order' => 'ASC',
    'meta_query' => array(
         'key'=>'role', 
         'value'=>array('red', 'blue', 'green'), 
         'compare'=>'OR'
    )

  )
);

查看

使用change query尝试一下,它可能会对您有所帮助

query_posts( array(
    'post_type' => 'people',
    'meta_query' => array(
        array(
            'key' => 'role',
            'value' => 'red',
            'compare' => 'LIKE'
        ),
        array(
            'key' => 'role',
            'value' => 'blue',
            'compare' => 'LIKE'
        )
    )
) );



这将返回所有内容…即使是值为“黄色”“紫色”的项也需要尝试,但是$post变量只会在arrayHey@PeteNorris的每次迭代中被覆盖,不是这样,您需要使用$posts+=而不是$posts=。这是数组上的基本PHP运算符,请尝试。它只返回第一个arrayT的值这很奇怪,尝试使用3个数组来获取3个数据集,然后使用array\u merge将它们连接起来,或者可能只是返回红色值,因为数据库中只有这些值。这很有意义,但我无法让它返回任何内容。@PeteNorris答案已编辑。尝试替换循环。感谢您的尝试-“抱歉,找不到帖子”哦,所以请先插入帖子我不明白…有帖子。如果我在顶部运行示例中的代码,它会返回一篇帖子。您提到在下面的评论中有许多循环。请阅读
<?php
if ( have_posts() ) {
     echo "<h3 class="col-md-12">Red & Blue & Green</h3>";
     while ( have_posts() ) {
        the_post();

        **// Your loop code**

    }
else {
    echo wpautop( 'Sorry, no posts were found' );
}
?>