2011-01-26 127 views
5

我正在创建一个wordpress插件,并且无法正常运行cURL调用。如何在wordpress插件中使用curl?

可以说我有一个页面www.domain.com/wp-admin/admin.php?page=orders

在订单页面我有一个看起来,看看是否点击一个按钮是如果函数因此它需要对同一页面执行cURL调用(www.domain.com/wp-admin/admin.php?page=orders & dosomething = true)以启动不同的功能。我这样做的原因是我可以让这个cURL调用是异步的。

我没有收到任何错误,但我也没有收到任何回复。如果我将我的网址更改为google.com或example.com,我会收到回复。是否存在认证问题或可能存在这种性质的问题?

我的代码看起来像这样..我使用gets,echo,而不是为了简化测试而做异步。

if(isset($_POST['somebutton'])) 
{ 
    curlRequest("http://www.domain.com/wp-admin/admin.php?page=orders&dosomething=true"); 
} 

if($_GET['dosomething'] == "true") 
{ 
    echo("do something"); 
    exit; 
} 

function curlRequest($url) { 
    $ch=curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 15); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    $response = curl_exec($ch); 
    return($response); 
} 
+0

您需要能够通过回送接口路由到您的网络服务器。 Web服务器可能已经配置为仅侦听“公共”IP,而不是在诸如127.0.0.1的环回地址上侦听。我建议在脚本中尝试一些愚蠢的东西,例如`system(“ping www.domain.com”)`,看看你是否可以在内部路由到主机。 – sarnold 2011-01-26 01:42:48

+0

卷曲的作品,如果我只是去公共部分的wordpress ..又名www.domain.com。但是,如果我试图去管理员(wp-admin),它不会给出回应。 – Jason 2011-01-26 01:56:38

回答

10

你不应该在WordPress插件中使用CURL。

而是使用wp_函数发出HTTP请求,例如,

function wp_plugin_event_handler() { 
    $url = 'http://your-end-point'; 
    $foo = 'bar'; 
    $post_data = array(
     'email' => urlencode($foo)); 

    $result = wp_remote_post($url, array('body' => $post_data)); 
} 

add_action("wp_plugin_event", "wp_plugin_event_handler"); 

在过去,我遇到了WordPress插件事件处理程序会挂起CURL的问题。使用WP_函数而不是按预期工作。