sql >> Databáze >  >> RDS >> Mysql

Synchronizujte všechny uživatelské role mezi dvěma instalacemi Wordpress sdílejícími stejné tabulky wp_users a wp_usermeta.

Měl jsem problémy se synchronizací uživatelských rolí (více uživatelských rolí na uživatele). Po půlnočním spalování oleje déle než dvě noci jsem našel hloupé magické řešení :)

Jednoduše jsem změnil 'set_user_role' na 'add_user_role' v "add_action( 'set_user_role', 'ksu_save_role', 10, 2);"

Koncový kód po malém magickém vylepšení

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

Kredity kódu:https://kinsta.com/blog/share-logins-wordpress/

Přidejte to do functions.php a můžete začít.

Je kompatibilní s pluginy pro změnu rolí, jako jsou „Woocommerce Subscriptions“ a „YITH Automatic Role Changer for WooCommerce Premium“

Můžete nastavit a změnit tolik rolí, kolik chcete.




  1. AKTUALIZUJTE, pokud existuje jinak INSERT v SQL Server 2008

  2. Ukládání souboru do databáze na rozdíl od systému souborů?

  3. Výukové programy pro databázovou poštu

  4. Jak propojit mysql s Basex?