设置如下:我正在使用两个特定插件实现Wordpress:Ultimate Members和Yith Vendors,这是一个woocommece插件。
我需要做的是,当WortdPress用户的功能更改为包括“yith\\u vendor”或WP角色更改为包括“vendor”角色时,更改数据库中最终成员“角色”的字段数据。
我需要这样做的方式是,当我的网站的访问者注册时(他们是通过Ultimate Members插件的一部分表单注册的),Ultimate Members设置与插件关联的角色,并将wordpress角色设置为subscriber。现在,当用户注册打开商店时,他们是通过yith供应商插件注册的。提交yith vendor表单时,将添加一个名为vendor的用户角色,并添加一个名为yith vendor的新功能。
此时,Ultimate Members插件看不到用户WP角色或功能的更改;但它需要这样做。
所以我想做的是改变最终的成员角色,使其与基于WP角色或能力的“供应商”的WordPress角色相匹配。
有两种方法可以触发此操作:1。)通过监控WP能力或角色。
两者都是阵列,我需要做的是在提交yith供应商申请表时监视WP角色或WP功能的更改。
当发生更改时,我需要将最终成员角色更新为供应商。
要点:
有一个名为“角色”的最终成员数据库字段,Wordpress同时具有角色和功能数组。
到目前为止已经做了但没有奏效的事情++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
add_action(\'after_yith_vendor_form_submitted\', \'sync_um_and_wp_role\', 99 );
function sync_um_and_wp_role( $user_id ) {
// the role the Ultimate member has when submitting a store application.
$um_role = \'member\';
// The WP role that the user will get when the yith-vendor form is submitted.
// or the capability will be yith_vendor ( I tried both ways)
$wp_role = \'vendor\';
$current_user = wp_get_current_user();
$roles = $current_user->roles;
return $roles;
{
return FALSE;
}
// if the role matches the WP role "vendor" we want to update
// if the capabilites matches yith_vendor we ant to update
if( $roles == $wp_role ) {
// set the um user
um_fetch_user( $user_id );
// update the user meta\'s role
update_user_meta( $user_id, \'role\', \'vendor\');
//there was a thought that maybe the WP user was not set -
// update wp user\'s role
// $wp_user_object = new WP_User( $user_id );
// $wp_user_object->set_role( $wp_role );
}
//reset the user so we won\'t override the current logged in user
um_reset_user( );
}