PHP实现订单状态匹配图片的if else判断 解决无图报错问题
无匹配图片时隐藏图片、规避404报错的实现方案
实现逻辑
通过服务端文件存在性校验提前判断对应订单状态的图片是否真实存在,仅当校验通过时才输出<img>标签,不存在时直接无任何输出,从根源避免触发服务器的文件找不到报错。
可直接替换的代码
将原有直接输出img标签的代码替换为以下逻辑:
// 拼接图片的服务器物理路径,用于校验文件是否存在 $target_image_path = get_template_directory() . '/images/truck-' . $order->status . '.png'; // 拼接前端可正常访问的图片资源URL $target_image_url = get_template_directory_uri() . '/images/truck-' . $order->status . '.png'; // 仅当文件真实存在时输出图片标签 if (file_exists($target_image_path)) { printf('<img src="%s" />', esc_url($target_image_url)); }
关键注意事项
- 注意两个WordPress内置函数的使用边界,避免路径拼写出错:
get_template_directory()返回主题目录的服务器端物理路径,仅可用于服务端文件校验操作,不能直接作为img标签的src使用get_template_directory_uri()返回主题目录的可访问网络URL,仅用于拼接前端资源的访问地址
- 无需额外编写else分支:校验不通过时直接空输出,完全符合“不展示任何内容”的需求,可避免冗余代码
- 搭配
esc_url()做输出转义,可以规避订单状态值包含特殊字符时导致的链接失效问题 - 若出现校验结果和实际文件不匹配的情况,检查对应images目录的读取权限,确保PHP运行进程拥有目录的读取权限
内容的提问来源于stack exchange,提问作者SavPhill
相关产品推荐
相关产品推荐

