WordPress出现Illegal string offset 'url'警告报错如何修复?
报错原因
- 该警告触发的核心逻辑是:代码中的
$c_icon实际为字符串类型,并非你预期的包含url键的关联数组,使用数组键访问字符串的偏移量不符合PHP语法规则,因此抛出报错。该场景在WordPress开发中非常常见,一般是后台未上传对应图标、自定义字段返回格式配置错误、取值逻辑异常导致的。
修复方案
你只需要在输出前增加类型和键存在性判断即可,同时可以兼容图标为空的场景避免页面显示异常,修改后的对应代码片段如下:
<div class="product-box"> <div class="product-logo-box"> <div class="product-logo"> <?php if (is_array($c_icon) && isset($c_icon['url'])): ?> <img src="<?php echo $c_icon['url']; ?>" alt="<?php echo $c_name; ?>" title="<?php echo $c_name; ?>"> <?php else: ?> <!-- 可替换为你自己的默认占位图路径 --> <img src="<?php echo get_stylesheet_directory_uri(); ?>/images/default-icon.png" alt="<?php echo $c_name; ?>" title="<?php echo $c_name; ?>"> <?php endif; ?> </div> <div class="logo-text"> <div> <h4><?php echo $c_name; ?></h4> <?php if( !empty( $c_snam ) ){ ?> <span><?php echo $c_snam; ?></span> <?php } ?> </div> </div> </div> </div>
额外排查建议
- 如果你的
$c_icon是通过ACF等自定义字段插件获取的图片值,进入字段设置页确认返回格式选择的是「数组」,如果选择的是「URL」格式,直接输出$c_icon即可,不需要加['url'] - 如果是通过WordPress原生的
get_post_meta、get_term_meta等函数取值,确认取值时第三个参数设置正确,没有强制返回字符串类型
内容的提问来源于stack exchange,提问作者User123123
相关产品推荐
相关产品推荐

