web-dev-qa-db-fra.com

Comment marquer une option comme sélectionnée

Je souhaite afficher les catégories de publication dans les paramètres de thème, ce que j'ai réussi à faire avec 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 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 des options de thème acera et j'ai modifié le type de sélection pour créer une option de catégorie de sélection.

voici le code que j'ai commencé avec:

<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 souhaite afficher les catégories (je l'ai fait et les options fonctionnent en mode frontal), ainsi que définir celle sélectionnée comme étant sélectionnée. (C'est manquant)

Merci

2
Selma

Ce que vous recherchez, c'est la fonction selected() .

Votre option mise à jour 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 fonction wp_dropdown_categories , je suppose.

Ce serait:

wp_dropdown_categories(
    array(
        'selected' => $option
        // maybe some other settings
    )
);
1
tfrommen

Veuillez vérifier votre code HTML si vous ne donnez pas la valeur de l'option: il ne sera donc pas enregistré lors de son stockage.

<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>
1
Shahinul Islam