WordPress body_class过滤函数非Shop页面触发PHP致命错误求助
问题解决:WordPress body_class 过滤器导致非Shop页面报错
问题原因
你的回调函数divi_engine_body_class仅在Shop页面(is_page('shop')为真)时返回$classes数组,其他页面没有返回值,默认返回null。而WordPress内部会对过滤器返回值调用array_unique()函数,当传入null时就触发了类型错误。
修复代码
修改函数,确保无论是否满足条件,都返回$classes数组:
function divi_engine_body_class( $classes ) { if(is_page('shop')) { $classes[] = 'woocommerce-page-SGARAGLINO'; } // 始终返回数组,不管条件是否成立 return $classes; } add_filter( 'body_class','divi_engine_body_class',99999);
关键说明
- WordPress的过滤器回调函数必须始终返回符合要求的类型值,
body_class过滤器要求返回数组,不能返回null或其他类型。 - 把
return语句移到条件判断外面,确保所有场景下都能返回正确的数组类型,这样内部的array_unique()就能正常执行。
内容的提问来源于stack exchange,提问作者Chris Sgaraglino
相关产品推荐
相关产品推荐

