2011-06-19 11 views
0

私は以下のコードがあります。なぜ私のget_optionワードプレス関数は、ページをリフレッシュするときnull値を返していますか?

<?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に何か問題がありますか?私はここで何を欠場したのですか?あなたは

color_option_update() 

ページがロードされるたびに呼び出しているよう

答えて

1

それは、どれが何の$ _POST [ '色が存在しないので、あなたが最初に(それはあなたが更新するまでnullとして設定されているページをロードするたびに意味になります']変数は、このページの読み込みに誰も提出していないためです)。

<?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機能をパラメータ化されているだろう

はこれを試してみてください。だから、

//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

関連する問題