传递Wordpress $current_user数据,以便在嵌入的javascript中用于预填充表单字段
Passing Wordpress $current_user data to be used in embbebed javascript to pre-populate form fields
首先,我只想说这是我在StackOverflow上的第一个问题,所以我现在想道歉,因为我可能会犯一些错误。
所以我得到了一个带有用户登录功能的wordpress网站,我通过Zendesk Web Widget提供支持,这基本上是一个支持联系表单。我试图预填充显示名称&支持表单中的电子邮件字段包含当前登录的用户信息。
通过我的研究,我发现Wordpress已经有一个函数:get_currentuserinfo(),我可以通过将此添加到我的functions.php子主题将数据传递给javascript:
function get_user($type = 'ID')
{
global $current_user;
get_currentuserinfo();
switch ($type)
{
case 'ID':
return $current_user->ID;
break;
case 'displayname':
return $current_user->display_name;
break;
case 'username':
return $current_user->user_login;
break;
case 'firstname':
return $current_user->user_firstname;
break;
case 'lastname':
return $current_user->user_lastname;
break;
case 'level':
return $current_user->user_level;
break;
case 'email':
return $current_user->user_email;
break;
default:
return;
}
}
通过使用echo get_user('displayname');
在javascript中使用显示名
来源:http://www.devdevote.com/cms/wordpress-hacks/get_user
所以我做了一些尝试,但没有成功。我试了这些:
尝试1:
<script>
var $wpName = <?php echo get_user('displayname') ?>;
var $wpEmail = <?php echo get_user('email') ?>;
zE(function() {
zE.identify({
name: $wpName,
email: $wpEmail
});
});
</script>
尝试2:
<script>
zE(function() {
zE.identify({
name: <?php echo get_user('displayname') ?>,
email: <?php echo get_user('email') ?>
});
});
</script>
尝试3:
<script>
var $wpName = $current_user->user_firstname;
var $wpEmail = $current_user->user_email;
zE(function() {
zE.identify({
name: <?php echo get_user('displayname') ?>,
email: <?php echo get_user('email') ?>
});
});
</script>
这里有人有一个想法或只是一个线索如何做到这一点?我一整天都在努力让这个工作,阅读了大约20到30个关于这个主题的帖子,但没有一个对我有一个有效的解决方案。
注:如果我在这里犯了一个错误,或者如果我没有把我的问题写好,我再次感到抱歉,这是我第一次!
结果我想出了一个更好的方法来做到这一点,感谢Erik Westlund在这里StackOverflow
它没有工作,因为我的javascript代码中的PHP没有被处理,所以任何echo语句都会导致失败。所以我不得不求助于另一个解决方案:json_encode()
<?php global $current_user;
get_currentuserinfo();
$user_name = $current_user->display_name;
$user_email = $current_user->user_email;
?>
<script type="text/javascript">
var username = <?php echo json_encode($user_name) ?> ;
var useremail = <?php echo json_encode($user_email) ?> ;
</script>
然后我只需要在javascript中这样使用它:
zE(function() {
zE.identify({
name: username,
email: useremail
});
});
希望这对将来的人有用!
- Javascript-用于展开数组的递归/for循环
- JavaScript:用于检索属性值的括号表示法
- 是javascript(用于节点)中用于忽略文件的任何微小库
- javascript用于带有html5的自动图像滑块
- JAVASCRIPT-用于变量“;i〃;未定义
- 我的Javascript(用于在ul中重新排序li)在IE中不起作用
- JavaScript 用于查找地点数量的纬度和经度
- Javascript:用于 vs jQuery.each() 与时间延迟
- Javascript用于圆角图像,在Chrome上不起作用
- JavaScript 用于在某些事件发生后执行函数
- JavaScript:用于播放WAV的自定义形状按钮
- JavaScript 用于当用户向下滚动屏幕时弹出的建议框
- JavaScript - 用于 x 轴和 y 轴上的循环
- JavaScript:用于查找链表节点的递归函数返回错误的节点
- 有没有通过 Evernote API 将 JavaScript 用于附件的具体示例
- 正则表达式 javascript 用于检查逗号分隔的数字
- 正则表达式/javascript 用于匹配括号中的值
- JavaScript:用于流媒体的简单 SoundCloud API 示例无法在 Safari 中正常工作
- Javascript 用于将名称值对分配给对象的简写
- Javascript 用于计算带有单选复选框和下拉项的提交表单