sql >> Databasteknik >  >> RDS >> Mysql

Synkronisera alla användarroller mellan två Wordpress-installationer som delar samma wp_users och wp_usermeta-tabeller.

Jag hade problem med att synkronisera användarroller (flera användarroller per användare). Efter att ha bränt midnattsolja i mer än två nätter hittade jag den fåniga magiska lösningen :)

Jag ändrade helt enkelt 'set_user_role' till 'add_user_role' i "add_action( 'set_user_role', 'ksu_save_role', 10, 2 );"

Slutkoden efter den lilla magiska justeringen

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

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

Lägg till detta till functions.php och du är bra att gå.

Den är kompatibel med plugins för rollbyte som "Woocommerce Subscriptions" och "YITH Automatic Role Changer for WooCommerce Premium"

Du kan ställa in och ändra hur många roller du vill.




  1. Är det konstigt att min SQLAlchemy MySQL-anslutning alltid hamnar i viloläge?

  2. Vad är MySQL-ekvivalenten för SQL Servers CHOOSE()-funktion?

  3. Hur använder man ANY istället för IN i en WHERE-klausul med Rails?

  4. Databasmodeller för e-handel Del 1:Nyhetsbrevet