我目前正在使用PointFinder主题进行两次WordPress安装。一个是主网站(网站A),而另一个是通过主网站(网站B)访问的子网站。
目标是,网站A与网站B共享其用户信息(users
,usermeta
,comments
)。
Website A
|_ Website B (this one should access the user info from website A)
我已经研究过数据库模式和一些php文件。从理论上讲,我可以在'wp-config.php'中定义第二个数据库连接,并将每个对网站B的php文件中的users
,usermeta
和comments
表的调用指向数据库来自网站A.
但这似乎相当广泛且容易出错。任何其他想法如何解决这个问题?
UPDATE /溶液
如下面的答案中提出的codiiv
,在不同的WP站点之间共享用户/元数据非常容易。添加新用户时,不要忘记添加更新缺少的用户角色的脚本。这是我发现的最全面的链接:
答案 0 :(得分:1)
1)要共享用户和usermeta信息,您可以在辅助(子站点)wp-config.php文件中添加以下代码行
define('CUSTOM_USER_TABLE', 'wp_users');
define('CUSTOM_USER_META_TABLE', 'wp_usermeta');
您需要将 wp _ 替换为正确的前缀
2)对于评论或其他表格,我没有做足够的研究,但我认为只要两者在同一台服务器上就可以实现。或者,您可以为注释创建自定义RSS源(包括完整注释),并在子网站中解析该注释。
答案 1 :(得分:0)
Sync all User Roles between two Wordpress Installs sharing the same wp_users and wp_usermeta tables.
function ksu_save_role( $user_id, $role ) {
// Site 1
// Change value if needed
$prefix_1 = 'first_';
// Site 2 prefix
// Change value if needed
$prefix_2 = 'second_';
$caps = get_user_meta( $user_id, $prefix_1 . 'capabilities', true );
$level = get_user_meta( $user_id, $prefix_1 . 'user_level', true );
if ( $caps ){
update_user_meta( $user_id, $prefix_2 . 'capabilities', $caps );
}
if ( $level ){
update_user_meta( $user_id, $prefix_2 . 'user_level', $level );
}
}
add_action( 'add_user_role', 'ksu_save_role', 10, 2 );