学习永不停止
我们一起努力吧!

两wordpress博客网站同一数据库内实现同步的方法

阳江鼎阳抄数设计交流群

一直想找一个完美同步两wordpress博客网站的用户数据库的方法,但苦于这类的技术文章太少,所以迟迟没有落实。今天打算再在网上搜索一下,看下能不能找到有利用价值的文章,半个小时后总算功夫不负有心人,一篇由作者Xiaoge写的“两个WordPress共享同一个用户数据库表教程”跃然在眼前,于是迫不急待地照着操作一下,果然成功实现。不敢独自收藏,现摘录再按个人的想法整理分享出来,也让有急需的朋友多一个搜索的渠道。

实现场景:wp-a和wp-b两个不同的博客网站安装在同一数据库中,wp-b实现同步wp-a的用户数据库。

步骤一:通过wordpress的工具》导出功能,将wp-b网站现成文章导出成xml以备后用。不懂如何导出xml文件可以百度,方法很简单,这里不深入解析。

步骤二:重新安装wp-b网站,安装时修改配置文件wp-config.php,将数据表的前缀重新命名,防止和wp-a冲突,例如改成这样:

$table_prefix = 'blogb_';

接着在在同个文件里找到这段话:

/* That's all, stop editing! Happy blogging. */

在其上方插入以下代码(注:如果找不到以上代码,可以放置在最前面,比如<?php后面):

define('CUSTOM_USER_TABLE', 'wp_users'); 
define('CUSTOM_USER_META_TABLE', 'wp_usermeta');

上面这段代码个人认为是点精之笔,一定要注意注意’wp_users’和’wp_usermeta’均为wp-a网站的用户数据表,当然前缀wp_也是假设,大家根据实际操作就行了。

步骤三:修改完配置文件以后,就可以开始继续安装好这个wp-b网站了,由于安装过程不在讨论之列,所以这里也不过多描述。

步骤四:wp-b安装完成后,登陆进wp-b后台时,当被提示“没有权限”时,请在主题的functions文件中插件以下代码:

add_action( 'user_register', 'dup_capabilities' );
add_action('profile_update', 'dup_capabilities');
function dup_capabilities( $user_id ){
    //在这里设置数据表前缀,不分主站子站,全部写上即可。
    $prefixs = array('wp_','blogb_');
    global $table_prefix;
    $cap_val = get_user_meta( $user_id, $table_prefix.'capabilities',true);
    if( !empty( $cap_val ) ) {
        foreach( $prefixs as $prefix ){
            if( $prefix != $table_prefix )
                update_user_meta( $user_id, $prefix.'capabilities', $cap_val );
        }
    }
}

以上代码适用于3.5以上版本的wordpress,旧版本这里就不提供了!根据经验,一般这样就可以使用wp-a网站的管理员帐号或其他帐号登陆进wp-b后台。当遇到还提示没有权限时,有可能是浏览器缓存所致,清理刷新便会恢复登陆;确实还不行的话,在数据库中删除所有以blogb_开头的wp-b的数据表,再启动安装程序,完成即可解决。

步骤五:进入wp-b后台后,再利用工具》导入,将第一步导出的XML文件重新导入,再进行一些简单的配置即可实现最终的效果:wp-b同步wp-a的用户数据库。

至此,教程结束。

结语:本方法其实可适用多个站点的用户数据同步,但要注意,本人是在同一数据库中整合“安装两个网站”进行操作测试并取得的成功,如果遇到两个远程不同站点不同数据库之间的的同步,那就会更复杂了,这种方法以后会写一下,敬请关注!

未经允许不得转载:http://jdks100.com/风语守望_博客 » 两wordpress博客网站同一数据库内实现同步的方法


分享到:更多 ()
关注“公众平台”:     学习交流QQ群(185619299):

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  • 9 + 0 = ?
  1. #1

    这个教程现在的WordPress版本还适用吗

    斯阔以1个月前 (09-11)回复

风语守望_博客,共同学习,一起成长!

网站首页联系我们
防复制