2

我需要将当前登录的 WordPress 3.2.4 用户的显示名称传递给 PhpFreeChat 2.0.4。实现这一点的途径似乎是使用 PhpFreeChat 挂钩功能为 WordPress 用户提供当前用户名。

在我的 PhpFreeChat config.local.php 我有:

<?php
    $GLOBALS['pfc_hooks']['pfc.before.auth'][5] = function ($app, $req, $res) {
    return function ($hr) use ($app, $req, $res) {
        $username = "";
        foreach($_COOKIE as $key => $value) {
            if(preg_match('@^wordpress_logged_in_@', $key)) {
                $cookie = explode('|', $_COOKIE[$key]);
                $username = $cookie[0];
            }
        }
        $hr->login = $username;
       };
};

根据我的阅读,这应该在启动时将当前登录的 WordPress 用户的用户名传递给 PhpFreeChat。

这似乎不起作用,因为聊天中没有显示用户名。

如果我只使用 cookie 解析代码创建一个 .php 页面,它确实给了我一个值。

任何人都可以建议任何其他方法吗?有没有办法从 WordPress 模板中将用户名传递给 PhpFreeChat?

4

2 回答 2

2

从 phpfreechat-2.0.5 开始,pfc.before.auth 钩子已经被重构,所以你必须像这样调整你的代码(注意return $username最后):

<?php
  $GLOBALS['pfc_hooks']['pfc.before.auth'][5] = function ($app, $req, $res) {
    return function () use ($app, $req, $res) {
      $username = '';
      foreach ($_COOKIE as $key => $value) {
        if (preg_match('@^wordpress_logged_in_@', $key)) {
            $cookie = explode('|', $_COOKIE[$key]);
            $username = $cookie[0];
        }
      }
      return $username;
    };
  };
于 2012-11-10T18:39:44.930 回答
1

该代码实际上只是缺少一个右括号)。

代码本身工作正常。我将把问题留在这里,因为它可能对其他人有用。

于 2012-10-30T14:51:58.617 回答