获取禁用状态下的选项页面值时代码异常问题排查
WordPress插件复选框选项异常问题解决
问题根源
当复选框未勾选时,get_option('my_options_setting')返回的是空字符串(或false,若选项从未被保存过),而非数组。此时直接访问$options['css']会触发PHP警告——你试图从非数组类型中获取数组元素,这就是代码异常的原因。
修复方案
方案1:先验证数组类型与元素存在性
在判断css值之前,先确保$options是数组且css键存在:
$options = get_option('my_options_setting'); if (is_array($options) && isset($options['css']) && $options['css'] == '1') { function load_admin_styles() { wp_enqueue_style('custom', CSS_PATH . 'custom.css'); } add_action('admin_enqueue_scripts', 'load_admin_styles'); }
方案2:给get_option设置默认空数组
调用get_option时传入第二个参数(默认值)为空数组,确保$options始终是数组类型,避免非数组访问报错:
// 第二个参数设为空数组,保证$options永远是数组 $options = get_option('my_options_setting', []); if ($options['css'] == '1') { function load_admin_styles() { wp_enqueue_style('custom', CSS_PATH . 'custom.css'); } add_action('admin_enqueue_scripts', 'load_admin_styles'); }
补充说明
你误以为空值和未设置的效果一致,但实际上:
- 复选框未勾选时,选项值为空字符串
- 选项从未被保存时,
get_option返回false
这两种情况都不是数组,直接访问数组键必然报错。通过上述方案可以彻底规避这个问题。
内容的提问来源于stack exchange,提问作者SjaakDeBeer
相关产品推荐
相关产品推荐

