WordPress : Comment marquer une option comme sélectionnée
Je souhaite afficher les catégories de publication dans les paramètres du thème, et je l’ai fait avec succès en utilisant ce code :
<?php /* Get the list of categories */
$categories = get_categories();
foreach ( $categories as $category) :
$selected = '';
?>
<option <?php echo $option ?> value="<?php echo $category->cat_ID; ?>">
<?php echo $category->cat_name; ?></option>
<?php endforeach; ?>
Tout fonctionne bien et je peux appeler l’option.
Ce qui manque, c’est qu’après avoir sélectionné une catégorie, puis j’ai enregistré les paramètres, la catégorie n’est pas marquée comme sélectionnée dans la liste déroulante. Pourtant, la catégorie sélectionnée est enregistrée dans la base de données.
—
J’utilise les options de thème acera et j’ai modifié le type de sélection pour créer une option de sélection de catégorie.
voici le code avec lequel j’ai commencé:
<select name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>">
<?php
if (get_option($value['id']))
$default = get_option($value['id']);
else
$default = $value['default'];
foreach ($value['options'] as $option):
$selected = '';
if ($option == $default)
$selected = ' selected="selected"';
?>
<option <?php echo $selected; ?>><?php echo $option ?>
</option>
<?php endforeach; ?>
</select>
Donc, à partir de celui-ci, je veux afficher les catégories (je l’ai fait et les options fonctionnent en frontal) et également définir celle sélectionnée comme sélectionnée. (Ceci manque)
Merci
Solution n°1 trouvée
Veuillez vérifier que votre code HTML ne donne pas la valeur de l’option : ainsi, lorsque vous le stockerez, il ne sera pas enregistré.
<select name="<?php echo $value['id']; ?>" id="<?php echo $value['id']; ?>">
<?php
if (get_option($value['id']))
$default = get_option($value['id']);
else
$default = $value['default'];
foreach ($value['options'] as $option):
$selected = '';
if ($option == $default)
$selected = ' selected="selected"';
?>
<option <?php echo $selected; ?> value="<?php echo $option ?>"><?php echo $option ?>
</option>
<?php endforeach; ?>
</select>
Solution n°2 trouvée
Ce que vous cherchez, c’est la selected()
fonction.
Votre mise à jour option
devrait ressembler à ceci :
<option
value="<?php echo $category->cat_ID; ?>"
<?php selected($option, $category->cat_ID); ?>>
<?php echo $category->cat_name; ?>
</option>
// EDIT
Oh, et BTW, dans votre cas particulier, vous voudrez peut-être utiliser la wp_dropdown_categories
fonction, je suppose.
Ce serait:
wp_dropdown_categories(
array(
'selected' => $option
// maybe some other settings
)
);
0 commentaire