【问题标题】:Warning: Trying to access array offset on value of type bool in /mytheme/functions.php on line 43警告:尝试访问第 43 行 /mytheme/functions.php 中 bool 类型值的数组偏移量
【发布时间】:2021-05-12 23:11:34
【问题描述】:

警告:尝试访问第 43 行 /mytheme/functions.php 中 bool 类型值的数组偏移量

// Add woocommerce support
$start_extended_woo = get_option( 'swp_woo' );
if( $start_extended_woo[0] == 'Enable' ){
add_theme_support( 'woocommerce' );
add_theme_support( 'wc-product-gallery-zoom' );
add_theme_support( 'wc-product-gallery-lightbox' );
add_theme_support( 'wc-product-gallery-slider' );
add_action( 'init', 'woo_remove_wc_breadcrumbs' );
function woo_remove_wc_breadcrumbs() {
    remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 );
}
}

将 php 从 7.4 升级到 php 8.0 后出现此错误,知道如何解决此问题吗?

我用的是Start Wp Theme,可惜3年没更新了

【问题讨论】:

  • 这种情况一直存在,只是升级到 PHP 8 将其从通知变为警告,并且您的环境可能设置为不显示通知。至于修复,这个错误很容易解释,你需要在尝试访问偏移量之前检查你的变量是否是一个实际的数组。

标签: php wordpress wordpress-theming


【解决方案1】:

根据documentationget_option()如果找不到选项返回false。您的选择可能不再存在。为了保持“安全”,更改为

if( is_array($start_extended) && $start_extended_woo[0] == 'Enable' ){

这将防止您引用的确切错误。

另一种方法是将get_option() 调用更改为:

$start_extended_woo = get_option( 'swp_woo' , ['Disabled'] );

这将返回与您的调用相反的假设。

或者,在数据库中添加swp_woo 的选项,无需任何代码更改。

【讨论】:

  • 谢谢,我尝试添加这两个代码,但在这种情况下,我的标题完全消失了。在 php 7.4 中,我的标题是可见的,在 php 8 中它消失并显示错误,您的代码修复了错误,但标题仍然丢失。有什么想法吗?
  • 我的猜测是,正如修复所暗示的那样,您的主题/插件/选项不再启用,并且标题是其中的一部分。您可能需要重新启用它或通过将选项 swp_woo => Enable 添加到 wp_options 表来强制启用它。
猜你喜欢
  • 2021-03-31
  • 2020-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-01
  • 2020-11-01
相关资源
最近更新 更多