wordpress2次开发设计实例教程手记:多站点的客户

2021-04-28 14:04 jianzhan

wordpress2次开发设计实例教程手记:多站点的客户数据信息共享资源


短视頻,自新闻媒体,达人种草1站服务 近期1个顾客规定小V帮她们企业站点做1个英文版本号,而且规定汉语版和英文版两个站点的客户数据信息能够互通并且不危害站点的一切正常运作。好吧,刚开始蛋疼的折腾,最先看了下wordpress的官方文本文档:《wordpress数据信息构造图》发现wordpress的客户数据信息表(wp_users和wp_usermeta)是相对性单独的,那末大家便可以立即将两个站点的客户数据信息库共享资源便可,无需客户数据信息考虑到会对两个站点中别的数据信息所导致的危害了。下面小V来讲说处理方式:

假定大家有两个wordpress站点,1个为.v7v3(数据信息表前缀为v7v3_)另外一个为en.v7v3(数据信息表前缀为v7v3en_),大家将.v7v3做为主站点,将en.v7v3做为主站的1个英文版的副站点。

最先开启en.v7v3的wp_config.php文档,并添加下列编码:

define( CUSTOM_USER_TABLE , v7v3_users //v7v3_为主站点的数据信息库前缀

define( CUSTOM_USER_META_TABLE , v7v3_usermeta

添加以上编码后两个站点之间的客户数据信息就完成了基本的互通,可是假如用主站的客户去登陆副站点会提醒沒有充足的管理权限。缘故是由于主站存储的客户管理权限值是以v7v3来开始的,以主站的管理方法员为例,管理方法员客户ID为1,人物角色是administrator,则表格中就有这样1条纪录:

user_id- 1, meta_key- v7v3_capabilities, meta_value- a:1:{s:13: administrator s:1: 1 }

而英文副站点的数据信息库中却沒有以v7v3en_开始的管理权限值纪录,因此导致管理权限不足的提醒。处理方式是运作1下SQL句子:

//向数据信息库中加上v7v3en_开始的管理权限纪录值

INSERT INTO `dbname`.`wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, 1 , v7v3en_capabilities , a:1:{s:13: administrator s:1: 1 }

这样做仅仅应用户id为1的管理方法员能够一切正常登录这两个网站,假如建立了新的客户,不管是管理方法员還是一般客户,都会被提醒管理权限不够,处理方式是在客户的申请注册钩子加上1个SQL数据信息库实际操作:

//设定主站的前缀,其它网站都共享资源该网站的客户数据信息表

$main_prefix = v7v3_

//设定子站的前缀,前缀为v7v3en

$addi_prefixs = array( v7v3en_

//加上作用到客户申请注册的钩子里

add_action( user_register , dup_capabilities

function dup_capabilities( $user_id ) {

global $main_prefix, $addi_prefixs;

//获得该客户管理权限的值,由于不一样人物角色的值是不一样的

 


    if( $cap_val = get_user_meta( $user_id,$main_prefix. capabilities , true ) ) { if( count( $addi_prefixs ) 0 ) { foreach( $addi_prefixs as $prefix ) { add_user_meta( $user_id, $prefix. capabilities ,$cap_val, true ); 将以上编码做成1个小软件或加上到主题的functions.php文档,这样就1劳永逸了。小V在当地检测时用的是wordpress3.4版本号,未出現任何难题,可是在顾客的站点中应用却出错了,查了下缘故,原先顾客那边的站点用的是wordpress3.5版的,3.5中编码与3.4不太1样,因此3.5或更高版本号请应用下列编码:

add_action( user_register , dup_capabilities

add_action( profile_update , dup_capabilities

function dup_capabilities( $user_id ){

//在这里设定数据信息表前缀,分不清主站子站,所有写上便可。

 


最终提下最终1段编码用法和上面的编码1样,如今两个站点的客户数据信息便可以彻底互通了。(PS:以上方式只可用于两个wordpress站点装在1个服务器上且同用1个数据信息的状况下。)