【问题标题】:How do you use curl within wordpress plugins?你如何在 wordpress 插件中使用 curl?
【发布时间】:2011-01-26 01:37:40
【问题描述】:

我正在创建一个 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); 
 } 

【问题讨论】:

  • 您需要能够通过环回接口路由到您的网络服务器。也许 Web 服务器已配置为仅侦听“公共”IP,而不是诸如 127.0.0.1 之类的环回地址。我建议在脚本中尝试像system("ping www.domain.com") 这样愚蠢的东西,看看你是否可以“内部”路由到主机。
  • 如果我只是去 wordpress 的公共部分,curl 就可以工作。又名 www.domain.com。但是,如果我尝试联系管理员 (wp-admin),它不会给出响应。
  • 如果您正在寻找异步进程,为什么不使用 ajax? cURL 同步的(即你的 php 脚本会阻塞直到 cURL 完成)。
  • 有一种方法可以使 cURL 不总是同步的。我以为我会通过使用 AJAX 获得相同的结果,但它看起来确实有效.. 谢谢

标签: php curl wordpress


【解决方案1】:

您不应该在 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_ 函数按预期工作。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      相关资源
      最近更新 更多