我在客户端wordpress网站上有一个下载部分。使用Download Monitor插件。使用Ninja Forms插件为DM插件保护它们,因此用户必须注册详细信息才能访问下载。
我想将下载表单网址中的ID添加到表单中的字段,以便客户端可以查看与该表单注册相关联的下载。
特定下载的解锁注册表单生成的URL类似于以下内容:
https://domain.com/no-access/download-id/572/
我已经找到了如何使用查询字符串(https://ninjaforms.com/how-to-auto-populate-form-fields-using-query-string/)执行此操作,但不知道如何使用上面的网址中的ID执行此操作。
理想情况下,如果可能的话,我也想将该ID转换为实际的下载标题。
有人可以提供建议吗?
谢谢!
答案 0 :(得分:0)
如果ID始终位于网址末尾,您可以使用basename非常简单地抓取它:
<?php
// in your code you will do this:
//$url = $_SERVER['REQUEST_URI'];
// but for this example, i need your url:
$url = 'https://domain.com/no-access/download-id/572/';
// grab the basename:
$id = basename($url);
echo "($id)"; // (572)
<强> ADDITION 强>
现在您可以找到$id
请求的下载ID,将其放在一个变量中,您可以在编写忍者表单的代码中使用该变量。例如:
$url = $_SERVER['REQUEST_URI'];
// this was just for debugging...now comment it out
// $url = 'https://domain.com/no-access/download-id/572/';
// echo "($id)"; (572)
$id = basename($url);
// instead put it in a variable you can use in your form
$GLOBALS['requested-download-id'] = (integer) $id;
现在,无论您拥有忍者形式的代码,都可以执行以下操作:
<form id="ninja-form" action="your-action" method="POST">
<?php
// sanity check...something may have gone wrong
if (empty($GLOBALS['requested-download-id'])) {
$download_id = 'NOT FOUND';
} else {
$download_id = $GLOBALS['requested-download-id'];
}
?>
<input value="<?php echo $download_id; ?>" type="hidden" name="download-id">
更加简化 - 全部完成
<form id="ninja-form" action="your-action" method="POST">
<?php
$id = basename($_SERVER['REQUEST_URI']);
// be sure you ended up with a number
$id = (integer) $id;
if (empty($id)) {
$download_id = 'NOT FOUND';
} else {
$download_id = $id;
}
?>
<input value="<?php echo $download_id; ?>" type="hidden" name="download-id">