You shouldn’t put quotes around the index for HTML names – otherwise you end up with 'single_images'
(including single quotes) as the PHP name (so you’d have to address it $iwmp_options["'single_images'"]
, which some might consider confusing) … eg:
add_action( 'admin_init', function () {
register_setting( 'iwmp_settings', 'iwmp_settings' );
add_settings_section( 'single_images', __( 'Single Images', 'iwmp_domain' ) , function () {
$iwmp_options = get_option( 'iwmp_settings' );
// Note quotes around the PHP index, no quotes around the HTML index.
// (Also id's should basically be alphanumeric with underscores/hyphens (for pre-HTML5 compatibility anyway).)
?>
<input id="iwmp_settings_single_images_" name="iwmp_settings[single_images]" type="checkbox" <?php checked( isset( $iwmp_options['single_images'] ) ); ?> />
<label class="description" for="iwmp_settings_single_images_"><?php _e('Use with Single Images', 'iwmp_domain'); ?></label>
<br />
<input id="iwmp_settings_single_images_zoom_" name="iwmp_settings[single_images_zoom]" type="checkbox" <?php checked( isset( $iwmp_options['single_images_zoom'] ) ); ?> />
<label class="description" for="iwmp_settings_single_images_zoom_"><?php _e('Use Zoom effect with Single Images', 'iwmp_domain'); ?></label>
<?php
}, 'iwmp_settings' );
} );
add_action( 'admin_menu', function () {
add_options_page( __( 'IWMP Settings', 'iwmp_domain' ), __( 'IWMP', 'iwmp_domain' ), 'manage_options', 'iwmp_settings', function() {
?>
<div class="wrap">
<h2><?php _e( 'IWMP Settings', 'iwmp_domain' ); ?></h2>
<form method="post" action="options.php">
<?php settings_fields( 'iwmp_settings' ); ?>
<?php do_settings_sections( 'iwmp_settings' ); ?>
<p class="submit">
<input type="submit" class="button-primary" value="<?php _e( 'Save Changes', 'iwmp_domain' ) ?>" />
</p>
</form>
</div>
<?php
} );
} );
Also, just checking for isset()
here on checkbox values makes things simple. And if you want to manipulate them then set a variable eg $single_images = isset( $iwmp_options['single_images'] );
etc. or use a wrapper function. (And as a side note for shortcode compatibility I find 1/0
handier then true/false
.)