我觉得我错过了一些简单的东西,但我想不出来
我需要让我的插件构建链接到一个完全通过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页面)并显示?
流量应为:
用户查看作业列表(位于站点前端)用户单击作业(链接)用户看到招聘广告(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输出。
最合适的回答,由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_action
减
wp_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_head
和
wp_footer
.