2011-01-26 3 views
5

wordpress 플러그인을 만들고 있는데 제대로 작동하려면 cURL 호출을받는 데 문제가 있습니다.어떻게 Wordpress 플러그인에서 컬을 사용합니까?

내가 페이지를 말할 수 있습니다 www.domain.com/wp-admin/admin.php?page=orders 주문 페이지 내에서

나는 버튼을 클릭하고 경우에 해당되는지 보이는 기능이 다른 기능을 시작하려면 같은 페이지 (www.domain.com/wp-admin/admin.php?page=orders & dosomething = true) 로의 cURL 호출을해야합니다. 내가 이렇게하는 이유는이 cURL 호출을 비동기로 만들 수 있기 때문입니다.

오류가 발생하지 않지만 응답을받지 못했습니다. google.com 또는 example.com으로 URL을 변경하면 답변을 받게됩니다. 인증 문제 또는 그러한 성질의 가능성이 있습니까?

내 코드는 다음과 유사합니다. 테스트를 쉽게하기 위해 도착, 에코 및 비동기를 사용하지 않습니다.

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

루프백 인터페이스를 통해 웹 서버에 연결할 수 있어야합니다. 아마도 웹 서버는 127.0.0.1과 같은 루프백 주소가 아닌 '공용'IP에서만 수신 대기하도록 구성되었을 수 있습니다. 나는 스크립트에서'system ("ping www.domain.com")'과 같은 어리석은 것을 시도하여 '내부적으로'호스트에 경로를 지정할 수 있는지 확인하는 것이 좋습니다. – sarnold

+0

나는 다만 wordpress .. aka www.domain.com의 공중 부분에가는 경우에 작동한다. 하지만 관리자 (wp-admin)에게 연락하려고 시도하면 응답이 없습니다. – Jason

+2

비동기 프로세스를 찾고 있다면 왜 AJAX를 사용하지 않을까요? cURL *은 동기식입니다 (즉, cURL이 완료 될 때까지 PHP 스크립트가 차단됩니다). –

답변

3

블로그의 관리 섹션은 물론 암호로 보호되어 있습니다. 인증 데이터를 전달해야합니다. 자세한 내용은 http 인증을 참조하십시오. 특히 여기 봐 :

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

당신은 아마도 CURLOPT_USERPWD 옵션 및 CURLOPT_HTTPAUTH을 설정할 수 있습니다.

+0

감사합니다. , 운이 없다. – Jason

+0

당신은 또한 당신의 URL에 "http : //"가 누락되어있다 .... –

+0

그건 문제가 아니고, 그 코드는 의사이다. – Jason

10

WordPress Plugin에서 CURL을 사용하지 않아도됩니다.

대신 HTTP 요청을 발행하는 데 wp_ 함수를 사용하십시오.

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

과거에는 워드 프레스 플러그인 이벤트 처리기가 CURL과 관련이있는 문제가있었습니다. 대신 WP_ 함수를 사용하여 예상대로 작동했습니다.

관련 문제