使用wp_Remote_Get而不是文件_Get_Contents

时间:2013-09-27 作者:David

已经通过主题检查器插件运行了我的主题,它似乎对file_get_contents 获取json url。我发现有帖子说我应该使用wp_remote_get. 我目前正在使用以下内容解码url:

$url = \'url\' . $var;
$json =   file_get_contents($url,0,null,null);
$output = json_decode($json,true); 
我从主题检查器中得到的消息是:

警告:在文件中找到file\\u get\\u内容。php可能的文件操作。

我这么说是因为wordpress或其他原因可能会用到一个函数吗?还有,我将如何使用wp_remote_get. 我尝试了一些变体,主要是将file\\u get\\u内容替换为wp_remote_get 没有运气。似乎根本无法解码url。

3 个回复
SO网友:kaiser

如果需要发送JSON响应,那么有一组函数可以实现。如果您在AJAX回调中需要它:

  • wp_remote_retrieve_response_message()
  • wp_remote_retrieve_response_code()
  • wp_send_json_success()
  • wp_send_json_error()
  • wp_send_json()

    $request  = wp_remote_get( \'http://example.com\' );
    $response = wp_remote_retrieve_body( $request );
    if ( 
        \'OK\' !== wp_remote_retrieve_response_message( $response )
        OR 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() 在最后。所以没有别的事可做了。

    请记住,99%的远程API都在发送200/OK 如果出现错误。您仍然需要手动检查结果并检查错误。

SO网友:Horttcore

使用wp_remote_get() 结合wp_remote_retrieve_body()

实例

<?php
$request = wp_remote_get(\'http://example.com\');
$response = wp_remote_retrieve_body( $request );
echo $response;
?>
检查文档中可能存在的争论

SO网友:Maruti Mohanty

您可以使用wp_remote_get() 按以下方式:

$url = \'url\' . $var;
$request =   wp_remote_get($url);
// Get the body of the response
$response = wp_remote_retrieve_body( $request );
// Decode the json
$output = json_decode( $response ); 
$output 现在有了你想要的,现在你可以继续做你的事情了。

还有一系列关于wp_remote_get(). 经历一下,肯定会有帮助的。

链接--Tutorial

希望有帮助。

结束

相关推荐

Why is json_decode failing?

我试图确定这是否与我在使用最新版本的Wordpress时在服务器上安装最新版本的PHP有关。或者如果我只是做错了:以下是正确返回值的函数(我在执行echo或var转储时可以看到它们): function my_Get_CURL (){ $url = \'http://someotherserver/event/94303?radius=30\'; // Initiate curl $ch = curl_init();