使用插件从cURL(超文本标记语言页面)响应中构建动态页面

时间:2013-07-12 作者:robooneus

我觉得我错过了一些简单的东西,但我想不出来

我需要让我的插件构建链接到一个完全通过cURL响应构建的页面。

我正在构建一个插件,该插件与外部API交互,以提取数据并构建一个动态列表(作业),该列表通过快捷码显示。每个列表项都需要链接到招聘广告。通过这个API,这些广告(通过另一个cURL)作为完整的HTML提供。

对于每个cURL请求,都需要一个client\\u id,该id存储在wordpress数据库中。需要的另一件事是引用作业的简单ID。我最初创建了一个以cURL为函数的PHP文件,并从查询字符串中提取ID。

链接是这样构建的:

$_ad_link =  plugins_url( \'includes/ad.php\' , dirname(__FILE__) );
但是cURL依赖于对数据库的访问来获取client\\u id(用作密码)。此文件似乎无法识别为wordpress文件,因此不知道如何处理get_option那样的话

我不应该通过javascript或类似的方式通过浏览器传递client\\u id。否则,我只需将其包含在查询字符串中或使用AJAX(尽管我没有AJAX方面的经验,例如是否有方法安全地为其提供client\\u id)。

有没有办法像我希望的那样,以某种方式将这个文件包含在Wordpress中并正确链接到它?或者有没有其他方法可以通过单击列表元素来获取cURL响应(完整的HTML页面)并显示?

流量应为:

用户查看作业列表(位于站点前端)我有一个客户端id,我需要从wp数据库和作业的id(我可以通过链接传递)。我想把招聘广告显示为自己的页面,而不是玩弄iframe之类的东西。

编辑:

正如下面的评论中所提到的,我希望在一个只有该内容的新“页面”中输出cURL响应。

我最初试图通过创建一个只有cURL请求作为函数的页面来实现这一点,然后将响应输出到该页面。然后,作业列表项将链接到此页面,该页面将调用cURL。然而,我需要该页面(cURL请求)来访问wp数据库,并在wordpress中正常工作。实际上,get\\u选项会出错。(我正在从查询字符串中提取作业的正确id)

  $job_id = $_SERVER["QUERY_STRING"];
  parse_str($job_id);
  if(isset($jobid)) {
        build_jobad();
  }

function build_jobad() {
  global $jobid;
  $sg_ad_url = \'curl-url-goes-here\';

        $cm = curl_init($curl_url);

        $options = get_option(\'plugin_options\');
        $clientid = $options[\'client_id\'];

        curl_setopt($cm, CURLOPT_USERPWD, $clientid);
        curl_setopt($cm, CURLOPT_HTTPHEADER,  Array(\'Content-Type: application/json;charset=utf-8\'));

        $jobs_ad_output = curl_exec($cm);
        curl_close($cm);
}
有没有办法这样做?我是否缺少一些东西来允许这个php页面在wordpress中运行?我认为除非它是一个模板页面,否则它不会工作,我不想创建模板页面。卷曲响应需要是only 页面上的html输出。

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

要使用WordPress执行此操作,请使用AJAX API. 虽然这在技术上是指Javascript,但如果发送了适当的值,它将处理任何请求。

您可以创建一个类似于以下代码的回调:

add_action(\'wp_ajax_my_action\', \'my_action_callback\');

function my_action_callback() {
    global $wpdb; // this is how you get access to the database

    $whatever = intval( $_POST[\'whatever\'] );

    $whatever += 10;

        echo $whatever;

    die(); // this is required to return a proper result
}
然后发送POST 与的请求my_action 参数集。注意这是hook名称wp_ajax_my_actionwp_ajax_. 您需要使用wp_ajax_nopriv_my_action 对于未登录的用户—可能是您的cURL 脚本未登录。

要显示cURL 所容纳之物

创建页面模板以显示cURL. 它应该看起来像:

/* Template Name: cURL Content */
// code for your curl data
// no other code at all
转到后端wp-admin->Pages 并创建一个页面。选择您创建的模板作为“模板”完成。该页面应仅显示您的cURL 数据它将没有内部WordPress功能,但是,就脚本或样式加载以及其他一些事情而言,因为您不包括wp_headwp_footer.

结束

相关推荐

未保存某些用户的WordPress设置API设置

我创建了一个插件,您可以在这里看到:http://wordpress.org/plugins/vegas-fullscreen-background-slider/一些用户表示设置没有保存。对我来说,它工作得很好,但我对php相当陌生,对设置api绝对陌生,所以我只是想知道我是否做了一些错误或不正确的事情,可能导致这种情况?虽然我说过,这对我来说很好,这就是为什么我很困惑。。。这是我选择的粘贴箱。php:http://pastebin.com/aSgmY42r