如何使用已登录的WordPress用户数据预填充Google Forms URL

时间:2016-12-16 作者:marikamitsos

我们需要登录用户的数据(username , Email , First Name , Last Name) 预先填写我们网站上现有的谷歌表单链接。

为什么

我们在网站上发布了谷歌表单,让我们的学生(6-11岁的青少年)扮演定制角色students, 作为测试。问题是,他们在写姓名、电子邮件等时不断出错。表格的链接如下所示:Click here for the test

因此,我们想用存储在WordPress数据库中的用户数据预填充这些不同的链接。

怎么做

这是该帖子演示表单的实际链接:
https://docs.google.com/forms/d/e/1FAIpQLSeChqhovV70FbILIlfeo8K5UL9q3hfjPkngEe4IJkXMmCbawg/viewform

对于识别学生的第一部分,我们始终保持相同的模式(就结构而言)。

user data

如果我们将表格的预填充功能用于:

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
    

1 个回复
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的不同问题,应该有人能够帮助您。

相关推荐

如何使用JavaScript访问管理区域中的WordPress经典编辑器的内容?

我正在开发一个小的Wordpress插件,它使用JavaScript将带有css类的html标记添加到Wordpress编辑器的可视文本视图中。我使用经典编辑器。根据Chrome开发工具,可视文本编辑器由几个div元素组成,然后是一个id为;内容\\u ifr“;它加载第二个body元素,该元素包含与帖子相关的所有html标记:<body id="tinymce" class="mce-content-body content post-type-post post-s