Вы можете установить и изменить столько ролей, сколько хотите.

дал Woocommerce Store (префикс базы данных wp_) и блог Wordpress (префикс базы данных wp_new_), в которых используются одни и те же пользователи (одни и те же таблицы wp_users и wp_user_meta).

Я хочу синхронизировать не только пользователей, но и роли пользователей (несколько пользовательских ролей) всех пользователей.

Для этого я попробовал решение, предлагаемоеhttps://kinsta.com/blog/share-logins-wordpress/

    function ksu_save_role( $user_id, $role ) {

        $prefix_1 = 'wp_'; 
        $prefix_2 = 'wp_new_'; 

        $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( 'set_user_role', 'ksu_save_role', 10, 2 );

Приведенное выше решение прекрасно работает, когда пользователю назначена только одна роль пользователя. Но если пользователю назначено несколько ролей, это не сработает. Я имею в виду, он не синхронизирует все роли пользователей.

Покопавшись в базе данных, я понял, что решение заключается в клонировании "meta_value" из "wp_capabilities" в "wp_new_capabilities" (в wp_usermeta)

Есть ли способ скопировать полное «meta_value» для «user_id» из «wp_capabilities» в «wp_new_capabilities»?

Если мы можем скопировать полное значение meta_value из «wp_capabilities» в «wp_new_capabilities», то все роли пользователя, назначенные пользователю, могут быть синхронизированы.

Итак, какие изменения необходимо внести в вышеупомянутый код для достижения этой цели?

Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос