跨多个插件同步角色

时间:2016-02-09 作者:user2197724

设置如下:我正在使用两个特定插件实现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( );
}

1 个回复
SO网友:rocketman7k

您可以使用一个带有角色和功能管理器的插件来实现这一点。然后,您可以将任何权限分配给所需的任一角色,或者创建一个新角色。

相关推荐

Modifying WordPress plugins

关于对WordPress插件进行更改,我有一个非常简单的问题。我为我的问题的简单性道歉,因为我对使用开源代码和插件开发新手非常陌生。我发现了一个插件,它为我正在进行的一个项目提供了一个很好的解决方案。然而,为了更好地满足我的需要,我修改了代码。插件有一个;GPLv2或更高版本“;许可证,基于this 似乎是说对插件的修改很好,只要我注意到我所做的任何更改,并将插件发布在;GPLv2或更高版本“;许可证也是。由于我对插件所做的修改,我希望能够将其作为客户端工作的一部分提供给其他人。然而,我不确定前进的最佳方