最新版本升级后WordPress中未定义的偏移量:0

时间:2021-03-14 作者:David

我的WordPress支持的网站一直运行良好,但在最新升级到5.6.2和5.7之后,我遇到了一个重大问题,实际上破坏了网站的一个重要部分,我查看了日志,发现了以下错误:

    [14-Mar-2021 00:29:32 UTC] PHP Notice:  Undefined offset: 0 in /var/www/html/wp-content/plugins/tours/includes/class-tours-tour-post-type.php on line 1709
    [14-Mar-2021 00:29:32 UTC] selected_original_tours: 
问题代码如下:

    if($show_filter) {
        $selected_destinations = isset($_GET[\'destinations\']) ? explode(\',\', $_GET[\'destinations\']) : [];
        $selected_tourstyles = isset($_GET[\'tourstyles\']) ? explode(\',\', $_GET[\'tourstyles\']) : [];
        write_log(\'selected_original_tours: \' . $selected_tourstyles[0]);
        for($i = 0; $i < count($selected_tourstyles); $i++) {
            $selected_tourstyles[$i] = str_replace(\'and\', \'&\', $selected_tourstyles[$i]);
            $selected_tourstyles[$i] = str_replace(\'_\', \' \', $selected_tourstyles[$i]);
            write_log(\'Selected_tourstyles:\' . $selected_tourstyles[$i]);
        }
        
        $selected_dates = isset($_GET[\'dates\']) ? explode(\',\', $_GET[\'dates\']) : [];
    }
因此,所讨论的行必须是:

    write_log(\'selected_original_tours: \' . $selected_tourstyles[0]);
升级总是天衣无缝的,但是从5.6.2和5.7开始,WordPress内部一定发生了一些变化。由于我不再与原始开发人员联系,如果有人能帮助我解决这个问题或更改受影响的代码以使我的函数再次工作,那将是一件好事?请提供一些专家建议。

1 个回复
最合适的回答,由SO网友:Matthew Brown aka Lord Matt 整理而成

并不是所有人都对内部结构有着完美的百科全书式的知识。了解这些代码块来自哪些文件肯定会对我(可能还有其他人)有所帮助。

我现在只能告诉你$selected_tourstyles 如果它是一个数组,则可能是一个空数组。

调试查找位置$_GET[\'tourstyles\'] 来自。可能是链接或表单。可能是链接或表单没有获取要放入查询字符串的数据。

您可以尝试包装:

write_log(\'selected_original_tours: \' . $selected_tourstyles[0]);
使用:

if(count($selected_tourstyles)>0){
    write_log(\'selected_original_tours: \' . $selected_tourstyles[0]);
}
只有当数组中有内容时,才会运行该行。我不知道这是否有利于这段代码的总体设计。