2011-01-26 16 views
5

Bir wordpress eklentisi oluşturuyorum ve düzgün çalışması için bir CURL çağrısı alıyorum sorun yaşıyorum.Wordpress eklentileri içinde curl'i nasıl kullanıyorsunuz?

ben bir sayfa var Sağlar ki www.domain.com/wp-admin/admin.php?page=orders emir sayfa içinde

Bir düğme tıklandığında ve eğer olduğunu görmek için görünen bir fonksiyonu var Bu yüzden farklı bir işlevi başlatmak için aynı sayfaya (www.domain.com/wp-admin/admin.php?page=orders & dosomething = true) bir CURL çağrısı yapması gerekir. Bu şekilde yapmamın nedeni bu cURL çağrısının async olması olabilir.

Hata alıyorum, ancak yanıt alamıyorum. URL'mi google.com veya example.com'a değiştirirsem bir yanıt alırım. Bir kimlik doğrulama sorunu veya bu doğaya ait bir şey var mı?

Kodum böyle bir şeye benziyor .. Kullanıyorum, echos'u kullanıyorum ve sadece test kolaylığı için async yapmıyorum.

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 sunucunuza bir geri döngü arabirimi üzerinden yönlendirebilmeniz gerekir. Belki de web sunucusu sadece 'public' IP üzerinde dinlenecek ve 127.0.0.1 gibi bir geridönüş adresinde değil. Ev sahibine 'dahili' olarak yönlendirilip yönlendirilemeyeceğini görmek için bir komut dizisinde sistem ("ping www.domain.com") gibi aptalca bir şey denemenizi öneririm. – sarnold

+0

Curl, sadece wordpress'in genel kısmına gidersem işe yarar .. aka www.domain.com. Ama eğer admin'e (wp-admin) ulaşmaya çalışırsam bir cevap vermez. – Jason

+2

Eşzamansız bir süreç arıyorsanız, neden ajax kullanmıyorsunuz? cURL * * eşittir (örn. php komut dosyanız cURL bitene kadar engellenecektir). –

cevap

3

Blogun yönetici bölümü elbette parola korumalı. Kimlik doğrulama verilerini iletmeniz gerekecek. Ayrıntılar için http kimlik doğrulamasına bakın. Özellikle Buraya bak:

http://www.php.net/manual/en/function.curl-setopt.php

Muhtemelen CURLOPT_USERPWD seçeneği ve CURLOPT_HTTPAUTH ayarlamak isteyeceksiniz.

+0

Teşekkürler , ama hayır şans – Jason

+0

Ayrıca URL'nizde "http: //" eksik .... –

+0

Bu sorun değil, kod pseudo – Jason

10

WordPress Eklentileri'nde CURL kullanmanız gerekmiyor. HTTP istekleri vermek için wp_ işlevini kullanın, örn.

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"); 

Geçmişte WordPress eklentileri olay işleyicileri CURL ile dolanıyorlarmış sorunları çalıştırmak. WP_ işlevlerini kullanmak, beklendiği gibi çalıştı.