wordpress升级8.1后的一些问题及解决方法

建站 · 10-14 · 127 人浏览

此解决方法只针对和我同样主题插件的,并且只是不显示报错,不影响前端显示,并没有解决根本问题,需要等待作者修复
主题:Neve 3.7.2
插件:WP Super Cache 1.10.0

编辑文章页面 Warning: Trying to access array offset on value of type bool in /www/wwwroot/xxx.xxx.net/wp-content/themes/neve/inc/views/template_parts.php on line 432

这是一段 PHP 错误报告,说的是在 template_parts.php 文件的第 432 行,你试图在布尔值类型的变量上访问数组偏移量,这是不允许的。

在编程中,布尔值(boolean)只有两种值:真(true)或假(false),它们并不能像数组那样存储多个值。因此,尝试在布尔值上访问数组偏移量会导致错误。

$markup  = '<a href="' . esc_url( get_the_permalink( $post_id ) ) . '"';
        $markup .= ' class="' . esc_attr( $read_more_args['classes'] ) . '"';
        $markup .= ' rel="bookmark">';
        $markup .= esc_html( $read_more_args['text'] );
        $markup .= '<span class="screen-reader-text">' . get_the_title( $post_id ) . '</span>';
        $markup .= '</a>’;

改为

if (is_array($read_more_args) && isset($read_more_args['classes'], $read_more_args['text'])) {
    $markup  = '<a href="' . esc_url(get_the_permalink($post_id)) . '"';
    $markup .= ' class="' . esc_attr($read_more_args['classes']) . '"';
    $markup .= ' rel="bookmark">';
    $markup .= esc_html($read_more_args['text']);
    $markup .= '<span class="screen-reader-text">' . get_the_title($post_id) . '</span>';
    $markup .= '</a>';
} else {
    // Handle the error case here.
}

编辑文章页面 Warning: Undefined variable $markup in /www/wwwroot/xxx.net/wp-content/themes/neve/inc/views/template_parts.php on line 453

if ( ! empty( $read_more_args['classes'] ) ) {
            $markup = '<div class="read-more-wrapper">' . $markup . '</div>';
        }

        $new_moretag .= $markup;

        return $new_moretag;

改为

$markup = isset($markup) ? $markup : '';

if ( ! empty( $read_more_args['classes'] ) ) {
    $markup = '<div class="read-more-wrapper">' . $markup . '</div>';
}

$new_moretag .= $markup;

return $new_moretag;

页面显示 Deprecated: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /www/wwwroot/xxx.net/wp-content/plugins/wp-super-cache/wp-cache-phase2.php on line 54

return do_cacheaction(
        'wp_cache_key',
        // phpcs:ignore WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase
        wp_cache_check_mobile( $WPSC_HTTP_HOST . $server_port . preg_replace( '/#.*$/', '', str_replace( '/index.php', '/', $url ) ) . $wp_cache_gzip_encoding . wp_cache_get_cookies_values() . '-' . wpsc_get_accept_header() . $accept_tag )
    );

改为

$url = $url ?? '';
return do_cacheaction(
    'wp_cache_key',
    wp_cache_check_mobile( $WPSC_HTTP_HOST . $server_port . preg_replace( '/#.*$/', '', str_replace( '/index.php', '/', $url ) ) . $wp_cache_gzip_encoding . wp_cache_get_cookies_values() . '-' . wpsc_get_accept_header() . $accept_tag )
);

页面展示 Deprecated: parse_str(): Passing null to parameter #1 ($string) of type string is deprecated in /www/wwwroot/xxx.net/wp-content/themes/neve/inc/views/pluggable/pagination.php on line 198

parse_str( wp_parse_url( get_pagenum_link(), PHP_URL_QUERY ), $url_query_args );

改为

$query_str = wp_parse_url( get_pagenum_link(), PHP_URL_QUERY );
$query_str = $query_str ?? '';
parse_str($query_str, $url_query_args);
wordpress php neve wp super cache