Can't save checkbox option

时间:2011-09-20 作者:MadsRH

我知道这很混乱,但有人能告诉我为什么我不能在这个插件中保存到复选框选项吗?

/* 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 个回复
最合适的回答,由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\' />

结束

相关推荐

我应该在主题中的哪里更新_Options?

我正在设计一个主题,其中主页(即。is_home()) 应该只显示最新的博客文章。我想做点什么$wp_query->update_option(\'posts_per_page\', 1) 每次我在主页上。所有其他显示帖子(如归档)的页面都应该遵循用户定义的选项。每次都这么做似乎有点不必要,因为选项应该只设置一次,对吗?是否可以在循环中忽略posts_per_page 和力have_posts() 只设一个职位?一般来说,这种“一次性设置”的东西应该去哪里?我真的不认为它应该是一个插件,因为它是特定