WordPress插件PHP报错求助:未定义变量与数组偏移访问问题
错误排查与修复
错误1:尝试在null类型的值上访问数组偏移量(第40行)
原因:首次加载插件设置页面时,get_option('picf_plugin_options')返回null(注册设置时default设为Null),直接通过$option['name_force']访问数组键会触发报错。
修复:先判断$option是否为数组,若不是则初始化空数组,再安全获取name_force的值。
错误2:未定义变量$yes_checked(第47行)
原因:当$name_force不等于"yes"时,仅定义了$no_checked变量,输出HTML时引用未定义的$yes_checked,触发PHP警告。
修复:提前初始化两个变量为空字符串,再根据条件赋值。
修改后的关键代码片段
function picf_plugin_setting_name_force(){ $option = get_option('picf_plugin_options'); // 初始化$option为数组,避免null报错 if (!is_array($option)) { $option = []; } // 安全获取name_force值,默认设为"no" $name_force = isset($option['name_force']) ? $option['name_force'] : "no"; // 提前初始化两个变量 $yes_checked = ""; $no_checked = ""; if($name_force == "yes"){ $yes_checked = "checked"; }else{ $no_checked = "checked"; } echo "<fieldset>"; echo "<input type='radio' name='picf_plugin_options[name_force]' value='yes' $yes_checked > 是   "; echo "<input type='radio' name='picf_plugin_options[name_force]' value='no' $no_checked>  否"; echo "</fieldset>"; }
额外优化项
- 注册设置时修正两处错误:
sanitize是错误键名,WordPress要求用sanitize_callback才能让验证函数生效- 将
default从Null改为空数组[],避免首次加载返回null
$args = array( 'type' => 'string', 'sanitize_callback' => 'picf_plugin_validate_option', 'default' => [] ); - 表单
action属性修正为options.php(原代码少了字母s),否则设置无法保存:<form action="options.php">
内容的提问来源于stack exchange,提问作者zynb moallemi
相关产品推荐
相关产品推荐

