A网站作为主网站,B网站作为子网站,B站要共享A站的用户,其他(文章、主题、设置等)数据不共享。新安装B网站,安装时数据库选择和A网站同一数据库下,A的数据库表头为wp_,B的改为和A的不一样,如:wpb_,
打开B站网站目录下的wp-config-sample.php文件,然后插入如下代码:
define('CUSTOM_USER_TABLE', 'wp_users'); define('CUSTOM_USER_META_TABLE', 'wp_usermeta');
b网站全新安装wordpress
这时候,用A网站的用户数据去登录B网站,可以登录,
但是A网站管理员登录B网站后,进B网站后台会提示:抱歉,您不能访问此页面。
************************************
这时回到网站进行测试,发现主网站id为1的用户已经可以登录B网站后台了
然后在A的functions.php 文件添加:
add_action( 'user_register', 'dup_capabilities' ); add_action('profile_update', 'dup_capabilities'); function dup_capabilities( $user_id ){ //在这里设置数据表前缀,所有站的数据库表前缀全部写上即可。 $prefixs = array('wp_','wpb_'); 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 ); } } }
functions.php通常在主题根目录中例如:wp-content/themes/onenav/functions.php
然后管理员身份登录A站,后台用户编辑功能里把每个用户重新编辑一下,不修改任何信息即可。编辑过后,B网站就可以获取用户权限的值,因为不同角色的值是不同的。
这时候A站B站不同cookie,还未解决cookie问题,还不能无缝切换,接下来实现同步cookie。
我们打开A网站的wp-config.php文件将其中8行密钥,复制粘贴到B网站的wp-config.php文件中,
把B站的身份认证密钥替换为A的,保证A网站密钥与B密钥一模一样。
在A、B两站的wp-config.php文件里同时添加:
define('COOKIE_DOMAIN', 'duoaili.com'); define('COOKIEPATH', '/');
打开A、B两站的 wp-includes/default-constants.php
把define( ‘COOKIEHASH’, md5( $siteurl ) ); 改为 define( ‘COOKIEHASH’, md5( ‘duoaili.com’ ) );
上面例子中所有的域名duoaili.com请自行替换成你的域名
评论(0)