现在,根据您的完整代码,有3个问题:
代码的第60行缺少分号,并引发致命错误。因此:
$instance[\'description_check_box\'] = $new_instance[\'description_check_box\']
应为:
$instance[\'description_check_box\'] = $new_instance[\'description_check_box\'];
在第66行,您使用的是字符串,而不是正确的布尔值
true 或
false 价值观如果这些都是“真实的”(参见
this answer 对于这意味着什么的另一个问题),双方都将解决
true 如果在if语句中使用。
if (\'false\') 是
true. 因此:
$description_check_box = $instance[ \'description_check_box\' ] ? \'true\' : \'false\';
应为:
$description_check_box = $instance[ \'description_check_box\' ] ? true : false;
在121号线上你没有
on 在引号中,所以你在比较
$description_check_box 至常数
on. 如果要检查
$description_check_box 是
on. 因此:
<?php if($description_check_box==on){ ?>
应为:
<?php if($description_check_box==\'on\'){ ?>
但是。这仍然行不通。因为你会
$description_check_box 到
true 或
false 根据是否在第66行检查,但稍后您将检查该值是否为
\'on\'.
您需要设置$description_check_box 到\'on\', 或者将比较改为检查$description_check_box 是true.
您还应该使用isset() 使用前$instance[\'description_check_box\'], 否则,当启用WP\\u调试时,您将在customiser中得到一个未定义的索引通知。
关于我的方法,请参考我的另一个答案,它避免了所有这些问题。