我正在研究一个解决方案,通过多个分类中的多个术语过滤自定义帖子类型。
这是我的代码:
<?php $term = "peoria,adams"; ?>
<div id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<?php $term = explode(\',\', $term); ?>
<?php $term_count = count($term);
$array_term = $term[0];
?>
<?php
$i = 1;
while ($i < $term_count) {
$array_term = "\'" . $array_term . "\', \'" . $term[$i] . "\'";
$i++;
}
?>
<?php echo $term = "array( ". $array_term . " )"; ?>
<?php //echo $array_term; ?>
<?php
$args = array(
\'post_type\' => \'property\',
\'tax_query\' => array(
\'relation\' => \'OR\',
array(
\'taxonomy\' => \'Status\',
\'field\' => \'slug\',
\'terms\' => array( \'Locked\' )
),
array(
\'taxonomy\' => \'County\',
\'field\' => \'slug\',
\'terms\' => $term
)
)
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
the_title();
echo \'<div class="entry-content">\';
echo get_the_post_thumbnail();
the_content();
echo \'</div>\';
endwhile;
?>
我回音
$term
它显示它应该显示的内容,但当我调用它时,它不工作
\'terms\' => $term
它不起作用,但如果我用
array( \'peoria\', \'adams\' )
它起作用了。
我怀疑我在做什么蠢事,但我只是错过了。有人能帮我一下吗?
提前感谢!
最合适的回答,由SO网友:birgire 整理而成
问题似乎在这里:
\'terms\' => $term
在你的情况下,它就像:
\'terms\' => "array( \'peoria\', \'adams\' )"
但应该是这样的
\'terms\' => array( \'peoria\', \'adams\' )
通过查看代码片段,您可以尝试
\'terms\' => explode( \',\', $term );
自
explode
将返回您要查找的阵列。
因此,不应将数组构造为字符串。
例如,检查PHP手册arrays here 和explode here.