我正在尝试建立一个房地产搜索网站。
首先,这是搜索表(抱歉,德语课和其他东西太多了):
<form method="post" action="<?php bloginfo(\'url\');?>/immobilien-suche/">
<?php
$taxonomiesImmo = get_object_taxonomies(\'immobilien\');
$termsImmoBundesland = get_terms($taxonomiesImmo[0]);
?>
<fieldset name="bundeslaender">
<input type="checkbox" value="alleBundeslaender">alle Bundesländer</input>
<?php foreach ($termsImmoBundesland as $termImmoBundesland) { ?>
<label><input type="checkbox" value="<?php echo $termImmoBundesland->slug; ?>" name="checkedBundeslaender[]"><?php echo $termImmoBundesland->name; ?></label>
<?php } ?>
</fieldset>
<input type="submit"/>
</form>
然后,在我的搜索结果页面模板中,我将这些多个复选框结果(数组)内爆,以获得一个干净的列表,如函数引用中所述:
\'terms\' => array( \'action\', \'comedy\' ), // wordpress codex
我的内爆
if ( count($_POST[\'checkedBundeslaender\']) > 1 ) {
$checkedBundeslaenderList = "\'".implode("\', \'", $_POST[\'checkedBundeslaender\'])."\'";
// string form: \'term1\', \'term2\', \'term3\' ...
} else {
$checkedBundeslaenderList = $_POST[\'checkedBundeslaender\']);
// string form: \'term1\'
}
最后是我的查询参数:
$newImmoArgs = array(
\'post_type\' => \'immobilien\',
\'posts_per_page\' => -1,
\'tax_query\' => array(
array(
\'taxonomy\' => \'bundesland\',
\'field\' => \'slug\',
\'terms\' => array( $checkedBundeslaenderList ),
\'operator\' => \'IN\',
\'include_children\' => false,
),
),
);
我的问题是,如果选中了2个或更多复选框,我的查询将不会有任何结果。。。仅当选中1个复选框时,它才起作用。
请帮忙!
向你问好,雷尔斯顿。
最合适的回答,由SO网友:TheDeadMedic 整理而成
你把数组搞混了。在你的“我的内爆”中,$checkedBundeslaenderList
根据项目的数量,在字符串和数组之间变化。
然后在查询参数中,将其嵌套在一个数组中:
\'terms\' => array( $checkedBundeslaenderList ),
因此,你最终可能得到的是:
array( array( 1 ) );
。。。或:
array( \'1,2,3,4\' );
两者都不是有效的格式。相反,请始终使用数组:
if ( ! empty( $_POST[\'checkedBundeslaender\'] ) ) {
$checkedBundeslaenderList = wp_unslash( ( array ) $_POST[\'checkedBundeslaender\'] );
} else {
$checkedBundeslaenderList = array();
}
然后直接将其传递给您的查询:
\'terms\' => $checkedBundeslaenderList,