Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Synchronisieren Sie alle Benutzerrollen zwischen zwei WordPress-Installationen, die dieselben wp_users- und wp_usermeta-Tabellen teilen.

Ich hatte Probleme mit der Synchronisierung von Benutzerrollen (mehrere Benutzerrollen pro Benutzer). Nachdem ich mehr als zwei Nächte Mitternachtsöl verbrannt hatte, fand ich die dumme magische Lösung :)

Ich habe einfach 'set_user_role' in 'add_user_role' in "add_action( 'set_user_role', 'ksu_save_role', 10, 2 );" geändert.

Der Endcode nach dem kleinen magischen 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

Code-Credits:https://kinsta.com/blog/share-logins-wordpress/

Fügen Sie dies zu functions.php hinzu und Sie können loslegen.

Es ist kompatibel mit Rollenwechsler-Plugins wie „Woocommerce Subscriptions“ und „YITH Automatic Role Changer for WooCommerce Premium“

Sie können beliebig viele Rollen festlegen und ändern.