почему моя функция wordpress get_option возвращает нулевое значение при обновлении страницы? - PullRequest
0 голосов
/ 19 июня 2011

У меня есть следующий код:

<?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') возвращает нольОднако, если я нажимаю кнопку обновления, он возвращает желаемое значение.Но если я перезагрузлю страницу, значение get_option ('custom_bg_color') вернется к нулю.

Что-то не так с моим update_option?Что я здесь упустил?

1 Ответ

1 голос
/ 19 июня 2011

Похоже, вы звоните

color_option_update()

каждый раз при загрузке страницы, что означает, что при первой загрузке страницы она устанавливается равной нулю до тех пор, пока вы не обновите ее (поскольку переменная $ _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, а не напрямую использовать данные постов. Так

//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']);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...