
在WordPress插件开发中,经常需要从外部API获取数据并在页面上展示。本文将针对从PancakeSwap API获取Token信息时,数据无法正常显示的问题提供解决方案。问题的核心在于如何正确地解析API返回的JSON数据,并将其有效地展示在WordPress页面上。
1. 理解问题:API响应与数据解析
首先,我们需要了解wp_remote_get()函数返回的数据结构。wp_remote_get()返回的是一个包含HTTP响应头和响应体的数组。我们需要使用wp_remote_retrieve_body()函数来提取响应体,这通常是一个JSON字符串。
问题的关键在于,直接将JSON字符串赋值给变量后,无法直接通过$datas->name等方式访问数据,因为PHP默认将JSON字符串视为一个普通的字符串。我们需要使用json_decode()函数将JSON字符串转换为PHP对象或数组。
2. 解决方案:使用json_decode()解析JSON数据
在_get_wp_pancakeswap_datas()函数中,我们需要添加json_decode()函数来解析API返回的JSON数据。
function _get_wp_pancakeswap_datas () {
$args = array (
'timeout' => 120,
'httpversion' => '1.1'
);
$url = "https://api.pancakeswap.info/api/v2/tokens/0xdb72feadd4a0734d62fa5a078551986519dca19d";
$call = wp_remote_get($url, $args);
$response_body = wp_remote_retrieve_body($call);
$response = json_decode($response_body);
return $response->data;
}这段代码首先使用wp_remote_retrieve_body()获取响应体,然后使用json_decode()将其解码为PHP对象。json_decode()函数的默认行为是将JSON数据解码为PHP对象。最后,我们返回 $response->data,因为PancakeSwap API的数据位于data字段下。
3. 修改output_pancakeswap()函数
现在,_get_wp_pancakeswap_datas()函数返回的是一个PHP对象,我们可以直接使用$datas->name等方式访问数据。
function output_pancakeswap() {
$datas = _get_wp_pancakeswap_datas () ;
//Nom et prix du token
$output = 'Nom du token : '.$datas->name;
$output .= '
';
$output .= 'Valeur du token : '.$datas->price;
$output .= ' $';
$output .= '
';
$output .= 'Valeur du token en BNB : '.$datas->price_BNB;
return $output;
}4. 完整代码示例
以下是修改后的完整代码:
120,
'httpversion' => '1.1'
);
$url = "https://api.pancakeswap.info/api/v2/tokens/0xdb72feadd4a0734d62fa5a078551986519dca19d";
$call = wp_remote_get($url, $args);
$response_body = wp_remote_retrieve_body($call);
$response = json_decode($response_body);
return $response->data;
}
// 2 étape : mettre en forme les données
add_shortcode('pancakeswap','output_pancakeswap');
function output_pancakeswap() {
$datas = _get_wp_pancakeswap_datas () ;
//Nom et prix du token
$output = 'Nom du token : '.$datas->name;
$output .= '
';
$output .= 'Valeur du token : '.$datas->price;
$output .= ' $';
$output .= '
';
$output .= 'Valeur du token en BNB : '.$datas->price_BNB;
return $output;
}5. 注意事项和总结
- 错误处理: 在实际开发中,应该添加错误处理机制,例如检查wp_remote_get()是否成功,以及json_decode()是否返回有效数据。
- 数据安全: 确保从API获取的数据经过适当的过滤和转义,以防止XSS攻击。
- API文档: 仔细阅读API文档,了解API返回的数据结构和格式,以便正确解析数据。
通过以上步骤,你应该能够成功地从PancakeSwap API获取Token信息,并将其正确地显示在WordPress页面上。核心在于理解json_decode()函数的作用,并正确地使用它来解析JSON数据。记住,良好的错误处理和数据安全措施是插件开发的重要组成部分。









