为什么我的get_option wordpress函数在刷新页面时返回null值?

时间:2011-06-19 08:31:57

标签: php wordpress

我的代码如下:

<?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有问题吗?我在这里想念的是什么?

1 个答案:

答案 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']);
}