WordPress : Comment marquer une option comme sélectionnée

Publié par Jean-Michel le

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 optiondevrait 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_categoriesfonction, je suppose.

Ce serait:

wp_dropdown_categories(
    array(
        'selected' => $option
        // maybe some other settings
    )
);
Catégories : Wordpress

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *