sql >> Database >  >> RDS >> Mysql

Synchroniseer alle gebruikersrollen tussen twee Wordpress-installaties die dezelfde wp_users en wp_usermeta-tabellen delen.

Ik had problemen met het synchroniseren van gebruikersrollen (meerdere gebruikersrollen per gebruiker). Nadat ik meer dan twee nachten middernachtolie had gebrand, vond ik de gekke magische oplossing :)

Ik heb eenvoudig 'set_user_role' gewijzigd in 'add_user_role' in "add_action( 'set_user_role', 'ksu_save_role', 10, 2 );"

De eindcode na de kleine magische tweak

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

Codetegoeden:https://kinsta.com/blog/share-logins-wordpress/

Voeg dit toe aan functions.php en je bent klaar om te gaan.

Het is compatibel met plug-ins voor rolwisselaars zoals "Woocommerce Subscriptions" en "YITH Automatic Role Changer voor WooCommerce Premium"

U kunt zoveel rollen instellen en wijzigen als u wilt.




  1. De grootte van de InnoDB-bufferpool voor uw MySQL-server berekenen

  2. Een lijst met servertriggergebeurtenissen retourneren in SQL Server

  3. COALESCE() Functie in Oracle

  4. Best practice voor foutafhandeling met PDO