WooCommerce感谢页添加自定义动态二维码失败求助
WooCommerce感谢页动态二维码不显示的排查方案
先确认订单变量是否有效
在thankyou.php里,先确保能正确获取订单对象和所需字段:// 获取当前订单对象 $order = wc_get_order( $order_id ); if ( ! $order ) return; // 调试输出订单号和小计,确认变量有值 echo '订单号:' . $order->get_order_number(); echo '小计金额:' . $order->get_subtotal();如果这些内容能正常显示,说明变量没问题;如果没输出,检查
$order_id是否正确传递,或者订单对象是否获取失败。验证Paylibo API请求URL的正确性
把订单变量正确拼接并编码到API URL中,避免特殊字符导致请求失败:$amount = $order->get_subtotal(); $order_number = $order->get_order_number(); // 替换为实际的Paylibo API地址,注意参数是否符合要求 $qr_api_url = "https://api.paylibo.com/qr?amount=" . urlencode($amount) . "&order_id=" . urlencode($order_number); // 调试输出完整URL,复制到浏览器直接访问看是否返回二维码 echo 'QR API地址:' . $qr_api_url;如果直接访问URL能显示二维码,说明API请求没问题;如果不能,检查API参数是否正确(比如金额格式、是否需要额外的密钥参数)。
检查img标签的写法是否规范
使用esc_url()确保URL安全,避免XSS风险,同时保证标签格式正确:<img src="<?php echo esc_url($qr_api_url); ?>" alt="支付二维码" width="200" height="200">打开浏览器开发者工具(F12),切换到「网络」标签,刷新页面后查看img的请求状态:
- 如果是404:URL错误,检查API地址和参数
- 如果是401/403:API权限不足,确认是否需要添加密钥等认证参数
- 如果是200但不显示:可能返回的不是图片格式,检查API响应类型
确认自定义模板路径正确
确保thankyou.php放在主题目录的正确位置:wp-content/themes/你的主题名称/woocommerce/checkout/thankyou.php,路径错误的话WooCommerce会默认使用插件里的模板,你的修改不会生效。清除缓存排除干扰
清空网站缓存(比如WP Rocket、W3 Total Cache等插件的缓存)和浏览器缓存,刷新感谢页再次测试,避免缓存导致页面未更新。排查API请求限制
检查Paylibo API的调用频率限制、地域限制,或者是否需要在后台配置允许你的网站域名访问,这些都可能导致API无法返回图片。
内容的提问来源于stack exchange,提问作者pechyno
相关产品推荐
相关产品推荐

