首页 > 解决方案 > 未定义的偏移量:最新版本升级后 WordPress 中的 0

问题描述

我的 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]);

我该如何解决这个问题或更改受影响的代码以使我的功能再次工作?一些专家的建议将不胜感激。

标签: phpwordpress

解决方案


我将在 for 语句中移动 write_log 并将 0 替换为 i,因此它变为:

// write_log('selected_original_tours: ' . $selected_tourstyles[0]); < 删除这一行 for($i = 0; $i < count($selected_tourstyles); $i++) { write_log('selected_original_tours: ' . $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]); }

然后,如果它不存在,则没有错误。

虽然说实话,我觉得日志的写法很奇怪。为什么需要记录选择的内容?


推荐阅读