sql >> Base de Datos >  >> RDS >> Mysql

Sincronice todos los roles de usuario entre dos instalaciones de Wordpress que comparten las mismas tablas wp_users y wp_usermeta.

Tuve problemas con la sincronización de roles de usuario (múltiples roles de usuario por usuario). Después de quemar aceite de medianoche durante más de dos noches, encontré la tonta solución mágica :)

Simplemente cambié 'set_user_role' a 'add_user_role' en "add_action('set_user_role', 'ksu_save_role', 10, 2);"

El código final después del pequeño ajuste mágico

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éditos del código:https://kinsta.com/blog/share-logins-wordpress/

Agrega esto a functions.php y listo.

Es compatible con complementos de cambio de roles como "Suscripciones de Woocommerce" y "YITH Automatic Role Changer for WooCommerce Premium"

Puede establecer y cambiar tantos roles como desee.