如何让文件获取内容在WordPress中工作

时间:2015-01-02 作者:Tcmxc

Im使用geoplugin。com根据用户位置显示内容codex的设置如下:

$geoplugin  = unserialize( file_get_contents(\'http://www.geoplugin.net/php.gp?      ip=\' . $_SERVER[\'REMOTE_ADDR\']) );
这在我的开发站点上有效,但在我的live站点上无效。我尝试使用wp\\u remote\\u get,但无法正确设置。关于为什么这在一个站点上有效而在另一个站点上无效,有什么想法吗?

2 个回复
最合适的回答,由SO网友:Tcmxc 整理而成

我就是这样解决这个问题的:

   function get_client_ip_env() {  
        $ipaddress = \'\';
        if (getenv(\'HTTP_CLIENT_IP\'))
            $ipaddress = getenv(\'HTTP_CLIENT_IP\');
        else if(getenv(\'HTTP_X_FORWARDED_FOR\'))
            $ipaddress = getenv(\'HTTP_X_FORWARDED_FOR\');
        else if(getenv(\'HTTP_X_FORWARDED\'))
            $ipaddress = getenv(\'HTTP_X_FORWARDED\');
        else if(getenv(\'HTTP_FORWARDED_FOR\'))
            $ipaddress = getenv(\'HTTP_FORWARDED_FOR\');
        else if(getenv(\'HTTP_FORWARDED\'))
            $ipaddress = getenv(\'HTTP_FORWARDED\');
        else if(getenv(\'REMOTE_ADDR\'))
            $ipaddress = getenv(\'REMOTE_ADDR\');
        else
            $ipaddress = \'UNKNOWN\';
        return $ipaddress;
    }

    $geoplugin  = maybe_unserialize( wp_remote_fopen(\'http://www.geoplugin.net/php.gp?ip=\' . get_client_ip_env()) );

SO网友:Collizo4sky

看来file_get_contents() 在服务器中不活动。相反,请使用wp_remote_get().

wp_remote_get() 属于WordPress家族HTTP API 专门用于发送GET请求。

的优点wp_remote_get() 结束file_get_contents() 另一个PHP流/传输功能是——WordPress HTTP API的创建是为了标准化一个API,该API尽可能简单地处理与HTTP有关的所有事情。HTTP API支持各种PHP HTTP传输或实现,以适应不同的托管环境和配置。

简而言之,如果file_get_contents() 未启用,wp_remote_get() 如果可用,将使用cURL;如果不可用,将查找并使用任何可用的HTTP传输。

结束

相关推荐

必须使用插件自动加载器:如何正确使用get_plugins()?

我的autoloader类负责加载必须使用的插件,这些插件不位于mu-plugins 文件夹要定位它们,我需要使用get_plugins() 作用According to Codex, 该函数接受一个参数:$plugin\\u folder(string)(可选):单个插件文件夹的相对路径。我的文件层次结构如下所示:|-- /mu-plugins | |-- autoload.php // only includes wpmu/autoload.php&#