我正在使用设置API构建一个主题。我有一个包含多个子页面的顶级菜单,除了复选框之外,其他一切都很正常。我正在将选项保存到单个选项数组中。
这是我的卫生功能:
public function sanitize($input) {
$options = get_option(THEMEOPTIONS);
$fields = gosu_adminpanel_fields();
foreach ($fields as $key => $field) {
if($field[\'callback\'] == \'gosu_controls_checkbox\') { // if the field is a checkbox
if(!isset($input[$key])) {
$options[$key] = "off";
}
}
}
foreach($input as $key => $field) {
$options[$key] = $value;
}
return $options;
}
$字段是一个数组,包含所有字段数据,如类型、默认值等。由于取消选中该选项时,不会在POST数组中发送复选框字段,因此需要进行额外的验证。
如果我使用的是单个菜单页,这将很好,但由于我使用的是多个菜单页,当我提交一个没有复选框的页面时,它会将值设置为“off”,认为用户取消选中了该框,因为该字段不存在。
我希望只有在提交了该复选框所在的页面时,才能验证该复选框,或者有其他方法可以在复选框值设置不正确的情况下进行验证。
我只想对所有主题的设置使用一个选项数组;不可能为每个页面使用变量。
我正在考虑更改“是/否”下拉列表的复选框,但这并不是一个优雅的解决方案。