2011-01-26 65 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_函數而不是按預期工作。