我制作了这个插件yelp reviews ticker
当您更改以下值时,我的问题出现在管理界面中:(任何涉及文本的内容)
它们被保存并且一切正常,只有当这些值更改为“0”时,它们才会保存到数据库中,但在窗口小部件的管理界面上会显示默认值。
所以我根本没有显示小部件的错误,设置时它不会显示“0”。
任何人都知道如何解决这个问题?
这是代码的一部分(我只发布了我遇到问题的部分)
function form( $instance ) { //<- set default parameters of widget
$title = empty($instance['title']) ? Reviews : $instance['title'];
$speed = empty($instance['speed']) ? 2500 : $instance['speed'];
$pause = empty($instance['pause']) ? 6000 : $instance['pause'];
~~~~~~~~~
?>
<p>
<label for="<?php echo $this->get_field_id('title');?>">Widget Title</label><br />
<input id="<?php echo $this->get_field_id('title');?>" name="<?php echo $this->get_field_name('title');?>" type="text" value="<?php echo $title; ?>"/>
</p>
<p>
<label for="<?php echo $this->get_field_id('speed');?>">Speed</label><br />
<input id="<?php echo $this->get_field_id('speed');?>" name="<?php echo $this->get_field_name('speed');?>" type="text" value="<?php echo $speed; ?>"/>
</p>
<p>
<label for="<?php echo $this->get_field_id('pause');?>">Pause</label><br />
<input id="<?php echo $this->get_field_id('pause');?>" name="<?php echo $this->get_field_name('pause');?>" type="text" value="<?php echo $pause; ?>"/>
</p>
我认为主要问题在于这些内容
$title = empty($instance['title']) ? Reviews : $instance['title'];
$speed = empty($instance['speed']) ? 2500 : $instance['speed'];
$pause = empty($instance['pause']) ? 6000 : $instance['pause'];
谢谢!
答案 0 :(得分:0)
我的问题是:
'' == NULL = true
0 == NULL = true
false == NULL = true
所以:
$speed = empty($instance['speed']) ? 2500 : $instance['speed'];
单个零将返回“true”
意思是它将使用“2500”值。
我将代码更改为“isset”并修复了它
if (isset($instance['speed'])) {
$speed = $instance['speed'];
} else {
$speed = "2500"; //default
}
解决了,谢谢