sql >> Database teknologi >  >> RDS >> Mysql

Synkroniser alle brugerroller mellem to Wordpress-installationer, der deler de samme wp_users og wp_usermeta-tabeller.

Jeg havde problemer med at synkronisere brugerroller (flere brugerroller pr. bruger). Efter at have brændt midnatsolie i mere end to nætter fandt jeg den fjollede magiske løsning :)

Jeg ændrede simpelthen 'set_user_role' til 'add_user_role' i "add_action( 'set_user_role', 'ksu_save_role', 10, 2);"

Slutkoden efter den lille magiske 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

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

Tilføj dette til functions.php, og du er god til at gå.

Den er kompatibel med rolleskifter-plugins som "Woocommerce Subscriptions" og "YITH Automatic Role Changer for WooCommerce Premium"

Du kan indstille og ændre så mange roller, som du vil.




  1. Tæl kumulativ total i Postgresql

  2. Forstå log buffer skylninger

  3. Top 30 mest nyttige Concurrent Manager-forespørgsler

  4. Opdel kommaseparerede værdier af en kolonne i række via Oracle SQL-forespørgsel