我知道这很混乱,但有人能告诉我为什么我不能在这个插件中保存到复选框选项吗?
/* 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\');}
}
最合适的回答,由SO网友:Brian Fegter 整理而成
不确定要在何处添加此功能,但我在代码中没有看到使用update\\u option()函数的任何地方。在表单HTML上方,您应该检查表单是否已发布数据,然后更新选项。
//Do nonce checking here and
$tweak = $_POST[\'tweakfunction1\'] ? $_POST[\'tweakfunction1\'] : \'\';
update_option(\'tweakfunction1\', esc_html($tweak));
Wordpress包含一个名为checked()的函数,该函数根据某个值进行检查。输入标记也没有值属性。我在下面添加了checked函数。
<input size="76" name="tweakfunction1" type="checkbox" id="tweakfunction1" <?php checked(\'foobar\', get_option(\'tweakfunction1\'));?> value=\'foobar\' />