不動産検索サイトを構築しようとしています。
まず第一に、これは検索フォームです(ドイツ語のクラスやものは申し訳ありません):
<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つだけチェックされている場合にのみ機能します。
助けてください!
よろしく、rellston。
あなたは配列を混同しています。あなたの "my implode"では、$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,