2011-06-19 97 views
0

我有下面這段代碼:當我刷新頁面時,爲什麼我的get_option 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

它看起來像您所呼叫

color_option_update() 
每次頁面加載時間

,這意味着當你第一次加載它被設置爲null,除非您更新的頁面(因爲沒有$ _ POST ['顏色']變量,因爲沒有人提交一個在這個頁面加載)。

試試這個:

<?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']); 
} 
+0

哦,太感謝你了!它現在有效。 從來沒有意識到它是如此簡單。 – baby

相關問題