领导突发奇想要给已经做好的wordpress做一个中英文转换网站,经过多次百度,参照大神们的一些经验,在本地实现了两个站共用账户。
我使用的wordpress是4.7,主题是avada5.05.
思路是在主网站下件一个en文件夹。再装多一个wordpress。形成一个主网站,一个子网站。
主站中文站是localhost/wordpress; 子站英文站是:localhost/wordpress/en.
主站表前缀是wp_; 子站表前缀是en_;
因为我的avada主题是有很多原有插件,同时也导入了dome,所以装主站像正常的安装。怎么安装请看百度,这里就不多说。
装好一些试运行正常后。我们就可以开始子站安装了。
我们吧主站所有的文件复制一份放到en文件夹:
把复制到en文件夹下的wp-config.php删掉。这回在浏览器访问localhost/wordpress/en.,进入子站的安装,数据库与主站的一模一样,只是数据库表前缀不一样;
把安装主站时的表前缀wp_改为en_(这个是我的表前缀,你也可以改成你喜欢的xxx_)。一路安装下次,这样我们的子网站就安装好了。
这时我们的主站与子站还是相互独立的,没有任何的关联。我主站的账户是:admin 密码123456,子站的账户是:adminen 密码是123456.
主子站的账户这时都是只是在各自的网站上能登陆,还不能互窜登录。装完就是得到两套相同的数据表,只是表前缀不一样而已。
现在开始进入我们的用户共享
我们注册用户信息主要保存在wp_users与 wp_usermeta表
与
1. 首先我们在子站en的 wp-config.php 加入下面代码:
define('CUSTOM_USER_TABLE', 'wp_users'); //wp_为主站点的数据库前缀
define('CUSTOM_USER_META_TABLE', 'wp_usermeta');
就像这个位置
这回子站就与主站建立了联系。这时你用子站的账号:adminen 123456登录子站:localhost/WordPress/en 这时已经登录不了子站了,因为子站的en_users表已经关联到了主站的wp_users表了。所以这时子站开始注册的账号就不能用了。
2.接下来我们就要对注册时对注册的账户进行处理了。让注册的用户的信息都带上主子表的表前缀wp_、en_。
在主站的主题的function.php中加入下面代码:
add_action( 'user_register', 'dup_capabilities' );
add_action('profile_update', 'dup_capabilities');
function dup_capabilities( $user_id ){
//在这里设置数据表前缀,不分主站子站,全部写上即可。
$prefixs = array('wp_','en_');
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 );
}
}
}
如下图
到现在为止,我们在主站注册的账户,就可以在子站localhost/WordPress/en登录了
3同理。我们子站注册的的账户我们也要能在主站上登录。保险起见,我把代码复制一份到子站en的主题function.php 上
这样基本完成了wordpress双语网站的建立。其实就是两个相对独立wordpress共用了注册表。其他的都是对立的。这样我们就可以根据不同客户管理两个wordpress网站了。
我其中很多都是参考其他大神的,他们有更深入的讲解其中的原理,这里也附上他们的链接以便大家共同学习。
http://www.solagirl.net/multi-wordpress-sites-sharing-user-data.html
http://www.moke8.com/article-16218-1.html
内容大同小异,就是wordpress版本的问题。
加:入
蛋疼。。。。。。。。。。。。。。。。。。。。。。我上传的图片过程不见了。。。。。。。。。第一次写还不知到怎么用。。。。。。。。。。。。。。。。。
接下来是补充双语网站共用cookie。在主站登录,登录子站就可以直接登录了,不用在次登录
参考http://www.solagirl.net/multi-wordpress-sites-sharing-user-data.html博主的做法。本人亲测是可行的,就不在写了。
1. 打开主站的wp-config.php,找到如下代码, 如果宏定义的值不是随机字符串,点击这里生成。
1
2
3
4
5
6
7
8
9
10
|