我试图在完成网站后上线,但发生了错误 警告:implode():在第674行的functions.php中传递的参数无效
foreach ( $one_array_font as $font => $variants ) {
$font = str_replace(' ', '+', $font);
$variants = implode(',', array_values($variants['variant']) );
$all_final_fonts[] = $font.':'.$variants;
}
$gfont = implode('|', $all_final_fonts); /* <-- This line fails */
wp_enqueue_style( 'zn_all_g_fonts', '//fonts.googleapis.com/css?family='.$gfont.''.$subset);
if ( $data['zn_main_style'] == 'dark' ) {
wp_enqueue_style('zn-dark-style', get_template_directory_uri() . '/css/dark-theme.css',array() ,false,'all');
}
if ( !empty ( $data['g_fonts_subset'] ) ) {
$subset = '&subset='.str_replace( ' ' , '' , $data['g_fonts_subset']);
}
答案 0 :(得分:2)
问题中的信息不够,但我认为这是正在发生的事情:
首先,$one_array_font
为空。
这意味着永远不会运行foreach()
循环。
这意味着行$all_final_fonts[] = $font.':'.$variants;
永远不会运行。
我猜测$all_final_fonts
之前没有定义过。因此,当代码到达implode
时,它仍然是未定义的。
implode()
失败,因为它要求输入字段是一个数组,但是你给它一个未定义的变量。
<强>解决方案强>
通过在$all_final_fonts
循环之前添加以下行,确保定义foreach()
:
$all_final_fonts = array();
这会将变量初始化为数组,因此如果您没有任何数据,implode()
就不会抱怨它。
希望有所帮助。
答案 1 :(得分:0)