You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastForex.io API汇率数据无法在WordPress表格中显示的求助

排查WordPress短代码无法显示FastForex汇率数据的问题

问题根源

你的代码存在两个核心问题:

  1. 数据遍历路径错误:FastForex API返回的日期与汇率数据嵌套在results->USD层级下,但你直接遍历了整个$data对象,导致循环处理的是start/end等无关字段,而非实际汇率数据。
  2. 缺少错误处理逻辑:未对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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 17:40:31