我们需要登录用户的数据(username , Email , First Name , Last Name) 预先填写我们网站上现有的谷歌表单链接。
为什么
我们在网站上发布了谷歌表单,让我们的学生(6-11岁的青少年)扮演定制角色
students, 作为测试。问题是,他们在写姓名、电子邮件等时不断出错。表格的链接如下所示:
Click here for the test 因此,我们想用存储在WordPress数据库中的用户数据预填充这些不同的链接。
怎么做
这是该帖子演示表单的实际链接:
https://docs.google.com/forms/d/e/1FAIpQLSeChqhovV70FbILIlfeo8K5UL9q3hfjPkngEe4IJkXMmCbawg/viewform对于识别学生的第一部分,我们始终保持相同的模式(就结构而言)。
如果我们将表格的预填充功能用于:
LoginName: STUDENT 01
Email: my-email@somedomain.com
FirstName: First
LastName: Last
我们得到以下链接:
https://docs.google.com/forms/d/e/1FAIpQLSeChqhovV70FbILIlfeo8K5UL9q3hfjPkngEe4IJkXMmCbawg/viewform?entry.646601418=STUDENT+01&entry.280532864=my-email@somedomain.com&entry.1176284616=First&entry.165661554=Last
分解并分析链接,我们注意到以下部分:
- 1st part of the link: 告诉谷歌这是一种形式
https://docs.google.com/forms/d/e/ - 2nd part of the link: 特定表单的ID
1FAIpQLSeChqhovV70FbILIlfeo8K5UL9q3hfjPkngEe4IJkXMmCbawg - 3rd part of the link
/viewform/ 后跟a? - 4th part of the link: 这是预填充的位置和数据所在的位置<正如前面提到的那样,由于我们总是保持相同的结构,我们总是会通过关节获得相同的位置
&, 例如:进入。646601418=学生+01
进入。280532864=我的-email@somedomain.com
进入。1176284616=第一个
进入。165661554=最后
我认为使用if 组合的操作current_user_can( \'student\' ) , public function init , wp_get_current_user() 也许还有一些JSonclick 可以通过将上述数据替换为从WordPress检索到的数据来解决此问题,以便登录学生从识别Google表单的第一部分开始的每个链接。
不幸的是,我不知道该怎么做。所以
How could one pre-fill Google Forms URLs with logged in WordPress user\'s data?<或者换句话说:
How to dynamically populate already existing external links with user data in WordPress.
编辑:进一步澄清
有not 目前只有一个谷歌表单,但很多。这意味着URL的第二部分(表单ID)不断变化。
因此,解决方案的工作流可以是一种操作,其中:
如果用户具有该角色student (或已记录)如果任何给定URL以开头https://docs.google.com/forms/d/e/
保持https://docs.google.com/forms/d/e/ 部分保留looooong Form ID 直到下一个/
添加/viewform/?
添加entry.646601418= 和(动态)填充current Login Name
添加entry.280532864= 和(动态)填充current Email
添加entry.1176284616= 和(动态)填充current First Name
添加entry.165661554= 和(动态)填充current Last Name
生产onclick 对于非管理员页面,新URL
https://docs.google.com/forms/d/e/form-loooongID/viewform?entry.646601418=xxxxxxx&entry.280532864=xxxxxxx&entry.1176284616=xxxxxxx&entry.165661554=xxxxxxx
SO网友:Gareth Gillman
就像你说的那样简单:
$user = wp_get_current_user();
if(!empty($user)) {
$email = $user->user_email;
$fname = $user->user_firstname;
$sname = $user->user_lastname;
$url = \'https://docs.google.com/forms/d/e/1FAIpQLSeChqhovV70FbILIlfeo8K5UL9q3hfjPkngEe4IJkXMmCbawg/viewform?entry.646601418=STUDENT+01&entry.280532864=\'.$email.\'&entry.1176284616=\'.$fname.\'&entry.165661554=\'.$sname;
echo $url;
} else {
$email = \'info@domain.com\';
$url = \'https://docs.google.com/forms/d/e/1FAIpQLSeChqhovV70FbILIlfeo8K5UL9q3hfjPkngEe4IJkXMmCbawg/viewform?entry.646601418=STUDENT+01&entry.280532864=\'.$email.\'&entry.1176284616=First&entry.165661554=Last\';
echo $url;
}
如果用户已登录
(if !empty ($user) ) 然后它从用户变量中获取数据
wp_get_current_user, 我们也可以包装在is\\u user\\u logged\\u in中,但这不应该是必需的,因为我们需要用户数据。
我不知道你为什么需要Javascript,url现在已经填充好了,所以当这个人看到表单时,他们应该看到表单中填充了他们的数据。
您需要删除并替换网站上的所有现有URL才能使用新的“版本”,但这超出了我的权限,因为您需要做3件事:
1) 使用函数,钩住\\u内容(或\\u摘录)并查找url的实例。2) 添加我的代码以获取用户详细信息3)preg用新的URL替换URL。
除了旧url之外,我的代码应该能为您提供大部分帮助,但是如果您提出了关于如何使用内容过滤器preg\\u替换url的不同问题,应该有人能够帮助您。