Bonjour,
J'essaye de modifier une template wordpress où il y a un moteur de recherche avec des bouton radios à checker, et j'aimerai qu'au lieu de cela je puisse avoir une liste déroulante des différents termes. La page php de la recherche fait appel à cette autre page pour les boutons radios :
<?php
$get_features = array();
$get_features = isset ( $_GET['feature'] ) ? $_GET['feature'] : $get_features;
$features_limit = houzez_option('features_limit');
if( taxonomy_exists('property_feature') ) {
$prop_features = get_terms(
array(
"property_feature"
),
array(
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => false,
//'parent' => 0
)
);
$features_count = count($get_features);
$checked_feature = '';
$count = 0;
if (!empty($prop_features)) {
foreach ($prop_features as $feature):
/*if( $features_count > $count ) {
$checked_feature = $get_features[$count];
}
*/
if( $features_limit != -1 ) {
if ( $count == $features_limit ) break;
}
echo '<label class="checkbox-inline">';
echo '<input name="feature[]" type="checkbox" '.checked( $checked_feature, $feature->slug, false ).' value="' . esc_attr( $feature->slug ) . '">';
echo esc_attr( $feature->name );
echo '</label>';
$count++;
endforeach;
}
}
J'ai essayé de modifier le code d'une liste déroulante existante (nommé label) dans le fichier php d'origine (celui qui fait appel au code ci-dessus). Ca marche, dans le sens où j'ai bien mes termes utilisés dans les boutons radios qui apparaissent dans ma liste, seulement je n'arrive pas à faire en sorte que la recherche prenne en compte ces termes.
Voilà ce que j'ai fais :
<?php
$get_features = array();
$get_features = isset ( $_GET['feature'] ) ? $_GET['feature'] : $get_features;
?>
<?php if( $adv_show_hide['label'] != 1 ) { ?>
<div class="col-md-3 col-sm-6 col-xs-6">
<div class="form-group">
<select class="selectpicker" name="label" data-live-search="false" data-live-search-style="begins">
<?php
// All Option
echo '<option value="">'.$houzez_local['all_labels'].'</option>';
$prop_features = get_terms (
array(
"property_feature"
),
array(
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => false,
)
);
$features_count = count($get_features);
houzez_hirarchical_options('property_feature', $prop_features, $features );
?>
</select>
</div>
</div>
<?php } ?>
Si quelqu'un peut aider le novice que je suis, afin que ca puisse fonctionner je lui serai éternellement reconnaissant ! :)
Merci à la communauté.
Salut
<option value="">
Normale, rien ne va, tu as pas gardé les mêmes nom de champs, tes options n'ont pas de valeur.
Un copier / coller ne suffit pas, il faut adapter.
Salut Balsakup,
Il faudrais donc donner des valeurs à
<option value="">
? Pourtant, les valeurs que je souhaite afficher, s'affiche bien dans la liste déroulante ... est-ce que c'est cela qui permet de lier les valeurs affichés aux valeurs recherchés ?
En fait, j'ai repris ce qui existe déjà pour d'autres listes déroulantes, j'ai effectivement juste remplacer les variables auxquels se refére la liste. Voici un exemple d'une liste déroulante qui fonctionne :
<?php if( $adv_show_hide['type'] != 1 ) { ?>
<div class="col-md-3 col-sm-6 col-xs-6">
<div class="form-group">
<select class="selectpicker" name="type" data-live-search="false" data-live-search-style="begins">
<?php
// All Option
echo '<option value="">'.$houzez_local['all_types'].'</option>';
$prop_type = get_terms (
array(
"property_type"
),
array(
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => false,
'parent' => 0
)
);
houzez_hirarchical_options('property_type', $prop_type, $type );
?>
</select>
</div>
</div>
<?php } ?>
Dans ce cas c'est les différents types ($prop_type)qui s'affichent, et moi je voudrais les caractéristiques ($prop_features)
Ces termes sont gérables dans le back de wordpress, on les ajoutent et ils apparaissent en tant que tels dans les listes ... donc je sais pas :/
Ce qui est affiché dans ta liste déroulante c'est les "label", c'est juste un affichage, la valeur est ce qui sera envoyé dans le formulaire.
De plus, tes checkboxes (qui ne sont pas des radios) portent le nom "feature[]" (<input name="feature[]" ...>
) et toi, tu nommes ta liste name="label"
, le back-end ne doit rien comprendre, car il reçoit pas les bonnes données.
Ok, je viens d'essayer de nommer correctement le select avec features[], mais ca ne marche pas ... c'est pas grave, je vais faire appel à un dév freelance car je pense c'est trop compliqué pour moi, peut être qu'il faut modifier également du js ... je sais pas. Merci quand même pour ton aide Balsakup !