我一直在做一个项目,我就是不能从这个API中提取数据。我正在开发一个插件,可以从API中提取数据,然后使用这些数据。我离线开发了这个项目,工作完成后,我开始在WordPress插件空间中开发。
但出于某种原因,我没有得到任何数据。
以下是我的要求。
add_action( \'wp_loaded\', \'precious_metals\' );
function precious_metals ( ) {
$content = file_get_contents("A WORKING API"); //Doing this for a client so hiding the API to be safe ;)
$result = json_decode($content);
}
以下是我的显示器(脱机工作)。表标题确实显示,但没有从API中提取数据。
<H4>New data fetched</H4>
<table border = solid 1px>
<tr>
<td><b>Type</b></td>
<td><b>$value</b></td>
</tr>
<?php foreach($result as $key=>$value): ?>
<tr>
<td><?php echo $key; ?></td>
<td><?php echo $value; ?></td>
</tr>
<?php endforeach; ?>
</table>
SO网友:ChristopherJones
你能把这个放进来告诉我们吗$content
看起来像?
<?php
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_URL, "A WORKING API");
$content = curl_exec($c);
curl_close($c);
echo \'<pre>\';
print_r($content);
echo \'</pre>\';
我很好奇这是一个WordPress问题还是一个CORS问题,电话是从另一个主机发出的。
SO网友:Faham Shaikh
您不需要使用file_get_contents
用于远程请求。您应该查看的函数是wp_remote_get
或wp_remote_post
取决于在接收响应之前要向api发送的数据。在任何情况下,您的代码都应该类似于:
$request = wp_remote_get( \'http://example.com\' );
$response = wp_remote_retrieve_body( $request );
if (200 !== wp_remote_retrieve_response_code( $response ))
wp_send_json_error( $response );
wp_send_json_success( $response );
请注意
wp_send_json_success/_error
函数是
wp_send_json()
, 其中包括
wp_die()
在最后。所以你不必打电话
wp_die()
之后
wp_send_json_
功能。
此外,大多数时候远程API都在发送200 status code 通常,除非api服务器无法解释api调用中的输入变量。因此,在使用之前,您仍然需要手动验证结果。