I have a checkbox, whose default state is unchecked:
<?php
function edit_theme_settings() {
if ( get_option('sold_text') == true ) { $display = 'checked'; }
else { $display = ''; }
update_option( 'sold_text', $display );
?>
<input type="checkbox" name="sold_text" id="sold_text" <?php echo get_option('sold_text'); ?> />
I'd like its default status to be unchecked the first time the form is displayed, subsequently its 'checked' status should be defined by get_option('sold_text').
Neither suggestion worked for me in this instance but I think I've solved it myself by using add_option()
A safe way of adding a named option/value pair to the options database table. It does nothing if the option already exists.
So I did: add_option('sold_text') with the value 'checked', thus the checkbox defaults to checked. Now, since the option already exists add_option() does nothing the next time the form is loaded or submitted and update_option() handles the updating of the checkbox status...
<?php
function edit_theme_settings() {
add_option( 'sold_text', 'checked' );
if ( get_option('sold_text') == true ) { $display = 'checked'; }
else { $display = ''; }
update_option( 'sold_text', $display );
?>
<input type="checkbox" name="sold_text" id="sold_text" <?php echo get_option('sold_text'); ?> />
Check boxes are stored as 0 or 1 (for unchecked, checked) so you need something like this:
<input type="checkbox" name='sold_text' id='sold_text' value="1" <?= checked( get_option('sold_text'), 1, false );?> />
WP's checked() function is designed for this: http://codex.wordpress.org/Function_Reference/checked