你如何在wordpress插件中使用curl?

Jas*_*son 6 php wordpress curl wordpress-plugin

我正在创建一个wordpress插件,我无法正常运行cURL调用.

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

在订单页面中,我有一个查看按钮是否被点击的功能,如果需要,它需要对同一页面进行cURL调用(www.domain.com/wp-admin/admin.php?page=orders&dosomething=是的)开始一个不同的功能.我这样做的原因是我可以让这个cURL调用异步.

我没有收到任何错误,但我也没有收到任何回复.如果我将我的网址更改为google.com或example.com,我会得到回复.是否存在身份验证问题或可能存在此类问题?

我的代码看起来像这样..我使用gets,echos,而不是为了易于测试而不做异步.

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); 
 } 
Run Code Online (Sandbox Code Playgroud)

Bil*_*ill 12

你不应该在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");
Run Code Online (Sandbox Code Playgroud)

在过去,我遇到了WordPress插件事件处理程序将与CURL挂起的问题.使用WP_函数改为按预期工作.


Eri*_*ere 3

当然,博客的管理部分是受密码保护的。您需要传递身份验证数据。有关详细信息,请参阅 http 身份验证。具体看这里:

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

您需要设置 CURLOPT_USERPWD 选项,可能还需要设置 CURLOPT_HTTPAUTH。