我正在创建一个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,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);
}
答案 0 :(得分: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");
过去我遇到过WordPress插件事件处理程序会挂起CURL的问题。使用WP_函数改为按预期工作。
答案 1 :(得分:3)
博客的管理部分当然是受密码保护的。您需要传递身份验证数据。查找http身份验证以获取详细信息具体来看:
http://www.php.net/manual/en/function.curl-setopt.php
您需要设置CURLOPT_USERPWD选项,并可能设置CURLOPT_HTTPAUTH。