0

我制作了这个插件yelp 评论代码
当您更改以下值时,我的问题出在管理界面中:(任何涉及文本的内容)

  • 小部件标题
  • 速度
  • 暂停
  • -

它们被保存并且一切正常,只有当这些值更改为“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'];

谢谢!

4

1 回答 1

0

我的问题是这样的:

'' == NULL = true
0 == NULL = true
false == NULL = true

所以:

$speed = empty($instance['speed']) ? 2500 : $instance['speed'];

单个零将返回“真”
,这意味着它将使用“2500”值。我将代码更改为“isset”,从而修复了它

if (isset($instance['speed'])) {
    $speed = $instance['speed'];
} else {
    $speed = "2500"; //default
}

解决了,谢谢

于 2013-09-18T19:02:12.377 回答