我的代码如下:
<?php function wp_copickpage()
{ color_option_update(); ?>
<form method="POST" action="">
<?php if (get_option('custom_bg_color') != null ) {?>
<input type="text" id="color" name="color" value="<?php echo get_option('custom_bg_color'); ?>" /> <?php }
else { ?>
<input type="text" id="color" name="color" value="<?php echo get_option('custom_bg_color'); ?>" />
<?php } ?>
<p><input type="submit" name="search" value="Update Options" class="button" /></p>
</form>
<div id="colorpicker"></div>
<?php echo('Color:'); echo get_option('custom_bg_color'); ?>
<link rel="stylesheet" type="text/css" href="<?php echo get_bloginfo('template_url');?>/farbtastic.css">
<script src="<?php echo get_bloginfo('template_url');?>/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="<?php echo get_bloginfo('template_url');?>/farbtastic.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#colorpicker').farbtastic('#color');
});
</script>
<?php }//end of function wp_copickpage
//save the selected color in a wordpress option
function color_option_update()
{ update_option('custom_bg_color', $_POST['color']);}
?>
一切正常,除非我刷新页面时,get_option('custom_bg_color')的值返回null。 但是,如果我按下更新按钮,它将返回所需的值。但是如果我重新加载页面,get_option('custom_bg_color')的值将返回null。
我的update_option有问题吗?我在这里想念的是什么?
答案 0 :(得分:1)
看起来你正在打电话
color_option_update()
每次加载页面时,这意味着无论何时第一次加载页面,它都会设置为null,直到您更新(因为没有$ _POST ['color']变量,因为没有人在此页面上提交了一个加载)
试试这个:
<?php function wp_copickpage()
{
//heres the changed part
if($_POST['color'] && $_POST['color'] != null) {
color_option_update();
}
?>
<form method="POST" action="">
<?php if (get_option('custom_bg_color') != null ) {?>
<input type="text" id="color" name="color" value="<?php echo get_option('custom_bg_color'); ?>" /> <?php }
else { ?>
<input type="text" id="color" name="color" value="<?php echo get_option('custom_bg_color'); ?>" />
<?php } ?>
<p><input type="submit" name="search" value="Update Options" class="button" /></p>
</form>
<div id="colorpicker"></div>
<?php echo('Color:'); echo get_option('custom_bg_color'); ?>
<link rel="stylesheet" type="text/css" href="<?php echo get_bloginfo('template_url');?>/farbtastic.css">
<script src="<?php echo get_bloginfo('template_url');?>/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="<?php echo get_bloginfo('template_url');?>/farbtastic.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#colorpicker').farbtastic('#color');
});
</script>
<?php }//end of function wp_copickpage
//save the selected color in a wordpress option
function color_option_update()
{ update_option('custom_bg_color', $_POST['color']);}
?>
编辑:回顾我过去的答案,为了将来的参考,写这个的更好方法是参数化color_option_update函数,而不是直接使用post数据。所以
//save the selected color in a wordpress option
function color_option_update()
{ update_option('custom_bg_color', $_POST['color']);}
变为
//save the selected color in a wordpress option
function color_option_update($color)
{ update_option('custom_bg_color', $color);}
然后这个
//heres the changed part
if($_POST['color'] && $_POST['color'] != null) {
color_option_update();
}
变为
//heres the changed part
if($_POST['color'] && $_POST['color'] != null) {
color_option_update($_POST['color']);
}