Comment faire fonctionner les paramètres par défaut pour certains champs avec l’API WordPress ?

Publié par Jean-Michel le

std est la valeur par défaut d’une option si elle n’est pas définie. J’ai seulement besoin de la valeur par défaut pour les champs sélectionnés. J’ai essayé beaucoup de choses mais rien ne semble fonctionner. J’ai vraiment besoin d’aide à ce sujet. Je ne sais pas où commencer.

Donc ici, je fais ma fonction pour ajouter le paramètre à ma page d’options.

                function nl_register_function_name() {
                    // Validation callback
                    register_setting( 'nl_theme_options', 'nl_theme_options', 'nl_validate_settings' );
                    // Add setting to section
                    add_settings_section( 'nl_styling_section', 'Styling', 'nl_display_styling_section', 'nl_theme_options.php' );
                    // Create selection field
                    $field_args = array(
                        'type'      => 'select',
                        'id'        => 'nl_function_name',
                        'name'      => 'nl_function_name',
                        'desc'      => 'Select border bottom size.',
                        'std'       => 'Small',
                        'label_for' => 'nl_function_name',
                        'items'     => array(
                            "None",
                            "Small",
                            "Medium",
                            "Large"
                        )
                    );
                    // Label
                    add_settings_field( 'label_function_name', 'function_name', 'nl_display_setting', 'nl_theme_options.php', 'nl_styling_section', $field_args );
                }
                // Registers the setting
                add_action( 'admin_init', 'nl_register_function_name' );

Et ici, je crée le code HTML pour le champ de sélection.

        function nl_display_setting ( $args ) {
            extract( $args );
            $option_name = 'nl_theme_options';
            $options = get_option( $option_name );
            switch ( $args['type'] ) {
                case 'select':
                    if( isset( $options[$id] ) ) {
                        $options[$id] = stripslashes( $options[$id] );
                        $options[$id] = esc_attr( $options[$id] );
                        echo "<select name='" . $option_name . "[$id]' value='$options[$id]'>";
                        foreach( $items as $item ) {
                            $selected = ($options[$id]==$item) ? 'selected="selected"' : '';
                            echo "<option value='$item' $selected>$item</option>";
                        }
                    } elseif ( !isset( $options[$id] ) ) {
                        $std = $args['std'];
                        echo "<select name='" . $option_name . "[$id]' value='$std'>";
                        foreach( $items as $item ) {
                            echo "<option value='$item'>$item</option>";
                        }
                    }
                    echo "</select>";
                    echo ($desc != '') ? "<br><span class='description'>$desc</span>" : "";
                break;
            }
        }

Comment faire fonctionner les paramètres par défaut pour certains champs avec l’API WordPress ?

Solution n°1 trouvée

Je l’ai corrigé! Je vais poster la solution ici pour d’autres qui pourraient avoir le même problème à l’avenir car il ne semble pas y avoir de solution en ligne.

                case 'select':
                    if( isset( $options[$id] ) ) {
                        $options[$id] = stripslashes( $options[$id] );
                        $options[$id] = esc_attr( $options[$id] );
                        echo "<select name='" . $option_name . "[$id]' value='$options[$id]'>";
                        foreach( $items as $item ) {
                            $selected = ($options[$id]==$item) ? 'selected="selected"' : '';
                            echo "<option value='$item' $selected>$item</option>";
                        }
                    } elseif ( !isset( $options[$id] ) ) {
                        echo "<select name='" . $option_name . "[$id]' value='$std'>";
                        foreach( $items as $item ) {
                            $selected = ($std==$item) ? 'selected="selected"' : '';
                            echo "<option value='$item' $selected>$item</option>";
                        }
                    }
                    echo "</select>";
                    echo ($desc != '') ? "<br><span class='description'>$desc</span>" : "";
                break;
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 *