Как вы используете curl в плагинах WordPress? - PullRequest
6 голосов
/ 26 января 2011

Я создаю плагин для WordPress и у меня возникают проблемы с правильным вызовом вызова cURL.

Допустим, у меня есть страница www.domain.com/wp-admin/admin.php?page=orders

На странице заказов у ​​меня есть функция, которая проверяет, была ли нажата кнопка, и если это так, ей нужно сделать вызов cURL на той же странице = orders & dosomething = true) чтобы запустить другую функцию. Причина, по которой я так поступаю, заключается в том, что этот вызов cURL может быть асинхронным.

Я не получаю никаких ошибок, но я также не получаю никакого ответа. Если я изменю свой URL на google.com или example.com, я получу ответ. Возможно, есть проблема с аутентификацией или что-то в этом роде?

Мой код выглядит примерно так ... Я использую get, echos, а не делаю async только для простоты тестирования.

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

Ответы [ 2 ]

12 голосов
/ 27 мая 2014

Вы не должны использовать CURL в плагинах WordPress.

Вместо этого используйте функцию 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_ вместо этого работало как ожидалось.

3 голосов
/ 26 января 2011

Административная часть блога, конечно, защищена паролем. Вам нужно будет передать данные аутентификации. Посмотрите http аутентификацию для деталей. Смотрите конкретно здесь:

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

Вы захотите установить опцию CURLOPT_USERPWD и, возможно, CURLOPT_HTTPAUTH.

...