I am trying to creating some custom options for a template I am developing but I am getting an error when the checkbox (Line 130) is unchecked:
Warning: Illegal string offset ‘show_admin_dev’ in E:\composite-cms\WordPress-Settings-Sandbox-master\lib\admin\pages\dev-page.php on line 11
This is the line that seems to be throwing the error:
if ( $options['show_admin_dev'] == 1 )
The entire code can be found on GitHub.
2 Answers
Your problem is that you haven’t included a sanitization function as the third parameter to register_settings on line 111. When no sanitization provided WordPress deletes the value of the option and creates a new one based only on what is passed in $_POST
. Since unchecked checkboxes are not sent by the browser at all you end up with $options['show_admin_dev']
being not set.
You should try to add sanitization which adds the value if it is not in the option
register_setting(
'ccms_developer_options',
'ccms_developer_options',
'ccms_developer_sanit'
);
function ccms_developer_sanit($newval) {
if (!isset($newval['show_admin_dev']))
$newval['show_admin_dev'] = 0;
return $newval;
}