J'essaie de construire un site de recherche immobilière.
tout d’abord, voici le formulaire de recherche (désolé pour les cours d’allemand et autres):
<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>
puis dans mon modèle de page de résultats de recherche, j'implose ces résultats de case à cocher multiples (tableau) pour obtenir une liste propre, comme indiqué dans la référence de la fonction:
'terms' => array( 'action', 'comedy' ), // wordpress codex
mon imploser
if ( count($_POST['checkedBundeslaender']) > 1 ) {
$checkedBundeslaenderList = "'".implode("', '", $_POST['checkedBundeslaender'])."'";
// string form: 'term1', 'term2', 'term3' ...
} else {
$checkedBundeslaenderList = $_POST['checkedBundeslaender']);
// string form: 'term1'
}
et enfin ma requête args:
$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,
),
),
);
Mon problème est que ma requête n'a aucun résultat s'il y a 2 cases ou plus cochées… c'est seulement si 1 case est cochée.
s'il vous plaît aider!
cordialement, Rellston.
Vous mélangez des tableaux. Dans votre "mon implode", $checkedBundeslaenderList
varie entre une chaîne et un tableau, en fonction du nombre d'éléments.
Et puis dans vos arguments de requête, vous l'imbrisez dans un tableau:
'terms' => array( $checkedBundeslaenderList ),
Donc, ce que vous pourriez vous retrouver est soit:
array( array( 1 ) );
...ou:
array( '1,2,3,4' );
Les formats ne sont pas valables non plus. Au lieu de cela, utilisez toujours un tableau:
if ( ! empty( $_POST['checkedBundeslaender'] ) ) {
$checkedBundeslaenderList = wp_unslash( ( array ) $_POST['checkedBundeslaender'] );
} else {
$checkedBundeslaenderList = array();
}
Et puis passez-le directement à votre requête:
'terms' => $checkedBundeslaenderList,