Comment faire fonctionner les paramètres par défaut pour certains champs avec l’API WordPress ?
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;
0 commentaire