现在,根据您的完整代码,有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中得到一个未定义的索引通知。
关于我的方法,请参考我的另一个答案,它避免了所有这些问题。