【发布时间】:2015-12-23 14:56:27
【问题描述】:
我们设计了一个 CMS,其中包含一个名为 users 的表。我们的一些客户在我们的 CMS 旁边使用 Wordpress。他们需要将 Wordpress 用户与我们的 CMS 用户同步,这样用户就不需要注册两次...... 什么是最好和最简单的解决方案?
【问题讨论】:
标签: php mysql wordpress synchronization content-management-system
我们设计了一个 CMS,其中包含一个名为 users 的表。我们的一些客户在我们的 CMS 旁边使用 Wordpress。他们需要将 Wordpress 用户与我们的 CMS 用户同步,这样用户就不需要注册两次...... 什么是最好和最简单的解决方案?
【问题讨论】:
标签: php mysql wordpress synchronization content-management-system
单点登录: 这取决于您的 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 上的登录身份验证功能/方法中执行此操作。您可以使用 wordpress 的这个 api 从您的 CMS 登录用户。
https://wordpress.org/plugins/json-api-auth/
单次注册: 单一注册比登录简单得多,对于 wordpress,您可以使用在用户注册后立即触发的 user_register 挂钩。然后,您可以在您的 CMS 中创建一个非常简单的 api,它接收用户详细信息并将其添加到 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";
}
【讨论】: