在这一系列的文章中,我会逐步说明如何将Discuz Ucenter与WordPress整合起来。实现用户数据统一。登陆、积分公用等。
也许很多朋友觉得WordPress没有必要和Ucenter整合。博客系统似乎也不需要那么多用户。
我个人处于如下考虑:
- 我希望我的博客中的阅读者、评论者、作者能够永久的作为一个数据保留。
- 同时,这些用户还可以拥有对应的积分来显示他们的拥有不同的权利。这在某些资源下载和技术支持上有明显的区别。
- 最后,这些用户的数据还可以用于其他的系统。
- 当然,我们通过整合操作还可以获得如下宝贵经验:更加熟悉Ucenter、WordPress的工作机制。Php能力更进一步、提高了自己、快乐了他人。哈哈……
让我们开始吧!
在第一步先来做一些准备工作吧!
工具部分:
- EditPlus 骨灰级编辑器
- Dreamweaver 个人偏好(用于css编写)
- FlashFXP 个人偏好(FTP上传工具)
- Poedit 语言包工具(WordPress语言包制作必备工具)
程序部分:
- 已经安装的WordPress博客一只
- 已安装的Ucenter系统一条
- Ucenter相关的程序2个[ api]、[ uc_client ]
暂时就这么多吧,如果有遗漏我们后边再补充。
这篇文章中我们先来完成Ucenter的应用添加,且对WordPress进行部署以达到它们可以相互通信的结果。
首先登陆Ucenter【我建议你使用创始人操作】,如下图添加应用:
请注意选择自定义安装:
自定义安装中有几项这边单独说明一下:
- 应用名称:此项可以根据自己需要来填写,但是要注意命名规则。我则填写“WordPress”
- 应用主URL:此项需要填写你的blog首页访问路径,注意不要以“/”结束。我则填写“http://www.woria.cn/blogs”
- 通信密钥:这个就随意填写了,不要看写密钥两个字就被吓住了。我则填写“wordpress_key”
- 应用类型:此项我们选择其他,因为WordPress并不是Discuz的产品。所以我们要选择“其他”
剩余项则可以留用,除非你清楚它的用途。否则你就留空吧。起码我是留空的。
需要注意的是最后两项:
- 是否开启同步登录
- 是否接受通知
这两个是要点选是的。即所谓的一卡通咯。
确定之后,我们回到应用管理页面,会发现通信是失败的。这是当然的,我们还需要对WordPress文件目录进行部署,才可以实现两个系统的通信。
现在我们需要用到[ api ]、[ uc_client ]两个程序。这两个程序在下载Ucenter时候会有附带。我来简单说明一下他们的用途:
- api文件夹中只包含了uc.php。如果你有注意,我们在添加Ucenter应用时候有一项“应用接口文件名称:uc.php”。此文件的作用是接受Ucenter的通知,对应用【WordPress】做相应的操作。比如说:我在Ucenter中更新了用户xx的积分,或者密码、头像。那么Ucenter会向所有的应用发送通知(如果打开通知选项的话)。这个通知会执行应用根目录下api文件夹uc.php中对应的操作。
- uc_client文件夹则包含较多的文件。它的作用是响应应用程序命令与Ucenter进行通讯。比如我在WordPress中要使用Ucenter的登陆方法。首先我需要引入uc_client中的client.php获得所有Ucenter开放的方法。由uc_client来向Ucenter发送数据获得结果。
上述啰哩啰唆也许你看的头昏脑胀,其实说白了是这样的。
- Ucenter发出指令执行操作是通过api文件夹。
- 应用程序(WordPress)发出指令执行操作是通过uc_client文件夹。
接下来我们来对WordPress进行部署以响应Ucenter的通信。
首先在WordPress正常运行中,我们需要加载Ucenter应用生成的配置信息。此配置信息中包含了Ucenter相关的数据库连接信息、应用注册 ID、uc_client访问路径等等。
我们将WordPress根目录的wp-config.php下载到本地准备添加Ucenter的配置信息。请注意保存备份
使用EditPlus打开之后,登陆Ucenter(使用创始人账户)在应用编辑中复制配置信息,如下图:
复制之后就使用EditPlus添加到wp-config.php中。添加的内容包含两部分,如图:
请注意第一部分是Ucenter配置。是直接粘贴从Ucenter后台复制来的配置信息。
第二部分则是自行添加的,定义了uc_client的访问路径。
define(‘S_ROOT’, substr(dirname(__FILE__), 0));//获得wp-config.php所在目录,也就是WordPress跟目录了
define(‘UC_CLIENT_ROOT’, S_ROOT.’/ucation/’);//定义常量UC_CLIENT_ROOT,即uc_client访问路径
include_once(UC_CLIENT_ROOT.’client.php’);//引入uc_client目录中client.php文件。
在图示中我用红色框标识出来的文件夹名字是ucation而不是uc_client。因为我将uc_client文件夹改名为ucation了。所以此处要做对应的修改。【请注意,对应的api目录中uc.php也要做响应修改】
我们来看一下对应的WordPress的目录关系,如图:
可以看到,在wp-config.php同级目录下api及ucation目录(ucation其实是uc_client)。
接下来我们也需要修改api中uc.php访问uc_client的路径。使用EditPlus打开uc.php查找:
define(‘UC_CLIENT_ROOT’, S_ROOT.’./uc_client/’);
修改为
define(‘UC_CLIENT_ROOT’, S_ROOT.’./ucation/’);
修改完毕之后,我们使用FlashFXP将wp-config.php文件、api文件夹、ucation文件夹上传至WordPress根目录。然后登陆Ucenter后台,是否通信成功了!
我们将最后重要的操作整理一下:
- 下载wp-config.php添加Ucenter配置信息及uc_client访问路径。
- 确保api中uc.php中uc_client的访问路径正确。
- 上传wp-config.php、api文件夹、uc_client文件夹到WordPress根目录。
如果在Ucenter后台中看到通信成功就算大功告成咯。
本文中涉及到的程序及附件暂不提供下载。等待教程结束之后。提供完成的附件。
有任何疑问请留言或者发Email给我。
¡
?
我按照你的方法试了,显示通信失败 另外一个网站也是一样,
能帮我看看不,QQ 727379786
+ 38657783
我对wiki不熟悉,但是我不清楚你怎么会想把它和wordpress进行整合?
具体需求是什么呢?
我的显示通信成功,但是用ucenter的用户登录wp后台还是提示没有用户 怎么回事啊
你通信成功只是说明可以和ucenter进行通信,使用ucenter的用户可以通过验证。
但是通过ucenter获得验证之后,wp并不能在自己的用户系统中找到用户资料。无法得到这个用户的信息。wp自然是提示没有用户的。
你需要在用户登陆时候作如下的处理:
1、同时验证wp和ucenter。是否授权登录的用户。是|进入第二步骤,不是|提示非法用户。
2、如果是wp,但不是ucenter。调取ucenter在ucenter中注册该用户,同时登陆wp。
3、如果是ucenter,但不是wp。调取wp注册函数在wp中注册该用户,同时登陆wp。
4、如果即是wp又是ucenter。则直接登录。
上边的步骤是最基本的处理步骤。这其中还有一些其他的情况。具体请关注我的其他日志。谢谢!
¡
2011
¡
¡
你好,我想知道这个方法在现在discuz x1.5上适用吗? 可以实现同步登录和退出吗?
ok
我做的就是1.5的
你好 我的通信不成功 .
我想问你:
1.[ api ] [ uc_client ]两个程序分别在哪个目录下?我见UCenter_1.5.2_SC_GBK\advanced\examples\api;
UCenter_1.5.2_SC_GBK\advanced\uc_client;请问是这2个吗?
2.”
define(‘UC_CLIENT_ROOT’, S_ROOT.’./uc_client/’);”我怎么也没有查找到,难道是版本问题?
我的Ucenter 是UCenter_1.5.2_SC_GBK,论坛discuz!7.2,WP是3.12
4.我想把WP和discuz整合起来,希望得到帮助,谢谢啦
•已经安装的WordPress博客一只
•已安装的Ucenter系统一条
博客为一只,系统为一条,你连单位都搞不清楚,还谈什么整合,真搞笑
2011