web-dev-qa-db-ja.com

チェックボックスオプションを保存できません

これはめちゃくちゃですが、なぜこのプラグインのチェックボックスオプションに保存できないのか、誰かに教えてもらえますか。

/* Runs when plugin is activated */
register_activation_hook(__FILE__,'vigtigt_besked_install'); 

/* Runs on plugin deactivation*/
register_deactivation_hook( __FILE__, 'vigtigt_besked_remove' );

function vigtig_besked_install() {
/* Creates new database field */
add_option("vigtigt_data", 'Default', '', 'yes');
add_option("tweakfunction1", 'Default', '', 'yes');
}

function vigtig_besked_remove() {
/* Deletes the database field */
delete_option('vigtigt_data');
delete_option('tweakfunction1');
}

/*———————————————————————*/
function vigtig_besked_html_page() {
?>
<div>
<h2>Vigtige beskeder!</h2>

<form method="post" action="options.php">
<?php wp_nonce_field('update-options'); ?>

<table width="900">
<tr valign="top">
<th align="left" width="140" scope="row">Skriv din tekst her:</th>
<td width="700">
<input size="76" name="vigtigt_data" type="text" id="vigtigt_data" value="<?php echo get_option('vigtigt_data'); ?>" />
(f.eks. Undervisning er aflyst pga. sne!)</td>

</tr>
<tr><th align="left" width="140" scope="row">Funktion1:</th><td>

<input size="76" name="tweakfunction1" type="checkbox" id="tweakfunction1" checked="<?php get_option( 'tweakfunction1' ); ?>" />
<?php echo  get_option( 'tweakfunction1' ); ?>
</td></tr>
</table>

<input type="hidden" name="action" value="update" />
<input type="hidden" name="page_options" value="vigtigt_data,tweakfunction1" />

<p>
<input type="submit" value="<?php _e('Gem ændringer') ?>" /> 
</p>

</form>





<?php if (!current_user_can('manage_options'))  {
        wp_die( __('You do not have sufficient permissions to access this page.') );
    }
    echo '<div class="wrap">';
    echo '<p>Here is where the form would go if I actually had options.</p>';
    echo '</div>'; ?>








</div>


<?php }

if ( is_admin() ){

/* Call the html code */
add_action('admin_menu', 'vigtig_besked_admin_menu');

function vigtig_besked_admin_menu() {
add_menu_page('Vigtigt', 'Vigtige beskeder!', '1','vigtig_besked', 'vigtig_besked_html_page');}
}
1
MadsRH

この機能を追加している場所はわかりませんが、このコードのどこにupdate_option()関数を使用しているかはわかりません。フォームのHTMLの上には、フォームにデータが投稿されているかどうかを確認してから、オプションを更新する必要があります。

//Do nonce checking here and 
$Tweak = $_POST['tweakfunction1'] ? $_POST['tweakfunction1'] : '';
update_option('tweakfunction1', esc_html($Tweak));

Wordpressには、特定の値に対してチェックするchecked()という関数があります。入力タグにはvalue属性もありません。チェック機能付きで以下に追加しました。

<input size="76" name="tweakfunction1" type="checkbox" id="tweakfunction1" <?php checked('foobar', get_option('tweakfunction1'));?> value='foobar' />
1
Brian Fegter