FastForex.io API汇率数据无法在WordPress表格中显示的求助
排查WordPress短代码无法显示FastForex汇率数据的问题
问题根源
你的代码存在两个核心问题:
- 数据遍历路径错误:FastForex API返回的日期与汇率数据嵌套在
results->USD层级下,但你直接遍历了整个$data对象,导致循环处理的是start/end等无关字段,而非实际汇率数据。 - 缺少错误处理逻辑:未对curl请求失败、JSON解码失败、API返回无效数据的情况做处理,出现问题时无法快速定位原因。
修复后的代码
// 生成汇率表格的函数 function exchange_rate_table_shortcode() { // 设置API接口地址 $url = "https://api.fastforex.io/time-series?from=AED&to=USD&start=2022-05-11&end=2022-06-11&api_key=xxxxxxxx"; // 故意隐藏API密钥 // 发送API请求并处理错误 $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); // 检查curl请求是否失败 if(curl_errno($ch)){ curl_close($ch); return '<p>获取汇率数据失败:'.curl_error($ch).'</p>'; } curl_close($ch); // 解码响应并检查JSON格式错误 $data = json_decode($response, true); if(json_last_error() !== JSON_ERROR_NONE){ return '<p>解析数据失败:'.json_last_error_msg().'</p>'; } // 检查API是否返回有效汇率数据 if(empty($data['results']['USD'])){ return '<p>未获取到有效汇率数据,请检查API密钥或日期范围</p>'; } // 开始构建表格HTML $table = "<table border='1' cellpadding='8' cellspacing='0'>"; $table .= "<tr><th>日期</th><th>汇率(AED→USD)</th></tr>"; // 遍历实际汇率数据生成表格行 foreach ($data['results']['USD'] as $date => $rate) { $table .= "<tr><td>" . esc_html($date) . "</td><td>" . esc_html($rate) . "</td></tr>"; } // 完成表格HTML构建 $table .= "</table>"; // 返回表格HTML return $table; } // 注册短代码 add_shortcode("exchange_rate_table", "exchange_rate_table_shortcode");
关键修改说明
- 修正数据遍历路径:将循环目标改为
$data['results']['USD'],直接访问嵌套的日期汇率数据。 - 添加错误处理:分别对curl请求失败、JSON解码失败、无有效数据的情况返回提示信息,方便排查问题。
- 增强安全性:使用
esc_html()转义输出内容,避免XSS安全风险。 - 优化表格样式:添加基础的border、cellpadding属性,让表格默认显示更清晰。
内容的提问来源于stack exchange,提问作者user20912925
相关产品推荐
相关产品推荐

