Как синхронизировать пользователей CMS с пользователями WordPress?

Мы разработали CMS, в которой есть таблица с названием users. Некоторые из наших клиентов используют WordPress рядом с нашей CMS. Им нужно синхронизировать пользователей WordPress с нашими пользователями CMS, чтобы пользователю не нужно было регистрироваться два раза …
Какое самое лучшее и простое решение?

0

Решение

Для единого входа:
Это зависит от вашей CMS и от того, какую технологию входа в систему он использует для входа в систему пользователей. Если это не масштабируемая система, то в основном она будет использовать сеансы для входа пользователей, в то время как для масштабируемых систем в основном используются файлы cookie.

В конце WordPress вы можете использовать этот крючок. Он будет запущен сразу после входа пользователя в WordPress.

<?php
function your_function($user_login, $user) {
// first lookup the user in wordpress
// Then use an api call to login the user in your cms
}
add_action('wp_login', 'your_function', 10, 2);
?>

Точно так же вы должны сделать это на вашей CMS, внутри функции / метода аутентификации входа в систему. Вы можете использовать этот API для WordPress, чтобы войти в систему с вашей CMS.

https://wordpress.org/plugins/json-api-auth/

Для единой регистрации:
Единая регистрация намного проще, чем вход в систему, для wordpress вы можете использовать ловушку user_register, которая запускается сразу после регистрации пользователя. Затем вы можете создать очень простой API в вашей CMS, который принимает данные пользователя и добавляет их в CMS, или, если обе системы сертифицированы как ssl, вы можете использовать простой почтовый запрос для отправки данных в CMS.

add_action( 'user_register', 'register_user_in_cms', 10, 1 );

function register_user_in_cms( $user_id ) {
// accessing the data of user, and then send a post request to CMS
$user_info = get_userdata($user_id);
echo 'Username: ' . $user_info->user_login . "\n";
echo 'User roles: ' . implode(', ', $user_info->roles) . "\n";
echo 'User ID: ' . $user_info->ID . "\n";
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]