Mysql
 sql >> Base de données >  >> RDS >> Mysql

Synchronisez tous les rôles d'utilisateur entre deux installations Wordpress partageant les mêmes tables wp_users et wp_usermeta.

J'ai eu des problèmes avec la synchronisation des rôles d'utilisateur (plusieurs rôles d'utilisateur par utilisateur). Après avoir brûlé de l'huile de minuit pendant plus de deux nuits, j'ai trouvé la solution magique idiote :)

J'ai simplement changé 'set_user_role' en 'add_user_role' dans "add_action( 'set_user_role', 'ksu_save_role', 10, 2 );"

Le code final après le petit ajustement magique

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 ); // THE MAGIC MODIFICATION

Crédits du code :https://kinsta.com/blog/share-logins-wordpress/

Ajoutez ceci à functions.php et vous êtes prêt à partir.

Il est compatible avec les plugins de changement de rôle tels que "Woocommerce Subscriptions" et "YITH Automatic Role Changer for WooCommerce Premium"

Vous pouvez définir et modifier autant de rôles que vous le souhaitez.