
本文详解如何修复 WordPress 插件中因 get_option() 返回 false 导致的“Trying to access array offset on value of type bool”警告,核心是使用空合并运算符(??)安全访问嵌套数组键。
本文详解如何修复 wordpress 插件中因 `get_option()` 返回 `false` 导致的“trying to access array offset on value of type bool”警告,核心是使用空合并运算符(`??`)安全访问嵌套数组键。
在 WordPress 插件开发中,使用自定义选项类(如 RationalOptionPages)管理设置页是一种常见实践。但当插件首次激活、选项尚未保存,或用户重置网站配置后,get_option('sample-page') 将返回 false(而非空数组),此时直接通过下标语法(如 ['asp_section_option'])访问其子键,PHP 8.0+ 会抛出致命警告:
Notice: Trying to access array offset on value of type bool
这是因为 PHP 不允许对布尔值 false 执行数组偏移访问操作——而旧版代码未做存在性校验,直接假设选项数组始终存在。
✅ 正确写法:使用空合并运算符(??)
将原始危险调用:
$opt_sectionas = get_option('sample-page')['asp_section_option'];
$opt_carousel = get_option('sample-page')['asp_carousel_option'];
$opt_animate = get_option('sample-page')['asp_animate_aos_option'];
$opt_columns = get_option('sample-page')['asp_advance_columns_option'];
安全重构为:
$options = get_option('sample-page');
$opt_sectionas = $options['asp_section_option'] ?? '';
$opt_carousel = $options['asp_carousel_option'] ?? '';
$opt_animate = $options['asp_animate_aos_option'] ?? '';
$opt_columns = $options['asp_advance_columns_option'] ?? '';
✅ 推荐写法:先缓存
get_option()结果,再统一使用??提供默认值(如空字符串''、null或预设默认值),既避免重复查询数据库,又确保类型安全。
⚠️ 注意事项与最佳实践
-
PHP 版本兼容性:
??运算符自 PHP 7.0 起可用;若需支持 PHP 5.6,改用三元判断:$opt_sectionas = (is_array($options) && isset($options['asp_section_option'])) ? $options['asp_section_option'] : '';
-
类型一致性:根据字段语义选择合理默认值。例如布尔型开关应默认
false,数字型字段可设0,多选数组可设[]:$enable_typing = $options['asp_typing_option'] ?? 'option-one'; // radio 默认值 $custom_css = $options['custom_css'] ?? ''; // 文本字段
-
初始化保障(进阶):在插件激活钩子中预设默认选项,从源头规避
false返回:register_activation_hook(__FILE__, function() { $defaults = [ 'asp_section_option' => 'default', 'asp_carousel_option' => 'on', 'asp_typing_option' => 'option-one', ]; update_option('sample-page', $defaults); }); -
调试建议:开发阶段可临时添加检查,快速定位问题:
error_log('get_option("sample-page") = ' . print_r(get_option('sample-page'), true));
通过以上改进,不仅能彻底消除该 Notice 错误,还能提升代码健壮性与可维护性——尤其在 WordPress 多环境部署(本地/测试/生产)中,确保选项逻辑稳定可靠。











