Php 显示同一数组中具有不同元数据的多个项
在Wordpress中,我试图在循环中显示数据。在这个特定的循环中,我希望包括具有以下元数据的所有项: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
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' );
}
?>