【问题标题】:Passing Wordpress $current_user data to be used in embbebed javascript to pre-populate form fields传递要在嵌入 javascript 中使用的 Wordpress $current_user 数据以预填充表单字段
【发布时间】:2016-10-14 02:08:43
【问题描述】:

首先我只想说这是我在 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 个关于该主题的线程,但没有一个适合我的解决方案..

附:再次抱歉,如果我在这里发错了或者我没有写好我的问题,这是我的第一次!

【问题讨论】:

    标签: javascript php wordpress


    【解决方案1】:

    感谢 Erik Westlund here on 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
        });
    });
    

    希望这对将来的某些人有用!

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 2017-06-13
    相关资源
    最近更新 更多