使用外部数据库中的信息登录时在WordPress网站中创建用户帐户


Create user account in WordPress website on login using info from external database

我有一个PHP网站,在MySQL数据库中有自己的用户。该网站是"活跃的",因此将继续创建新的用户帐户,时间不确定。

现在我必须使用WP创建另一个网站,具有以下2个特殊性:

    网站
  • 的某些部分只能在用户登录网站时访问
  • 可以访问此WP网站的用户是第一个网站使用的用户表中的一些用户。这一点很重要,因为并非所有这些用户都具有访问权限,只有具有该表中具有特定值的字段之一的用户才能访问。

我考虑过的实现此目的的第一种方法是创建一个自定义登录函数来执行所有处理,而无需让wordpress自行为这些用户创建任何类型的用户帐户。我不是WP开发人员,但我想通过一些研究,我可以找到如何做到这一点。

该选项的问题在于,我计划包含一个论坛,也许还有其他功能,这些功能实际上需要WP中的用户帐户来跟踪评论,帖子等

因此,我为什么要寻求建议,以及如何处理所有这些问题。理想情况下,我需要的是一个实现:

  • 当用户想要访问网站的某些部分时要求登录
  • 登录时检查外部数据库中的用户凭据,使用自定义函数不仅验证用户名和密码,还验证第三个(甚至第四个(字段
  • 登录时,如果是第一次,则使用用户在其他网站中拥有的信息在WP中为该用户创建一个帐户,但阻止任何典型的帐户管理功能(更改个人资料信息,密码等(

我知道通过一些编码可以完成所有工作,我只是对Wordpress不太了解,所以我不知道这一切是否太复杂了。

我想到的另一个选项是在创建原始网站中的帐户时立即在WP中创建用户帐户,但我不知道这是否可能以"合法"的方式(从另一个网站为WP创建帐户(。

关于这个主题的任何建议将不胜感激

一种解决方案是通过将信息从旧网站推送到 wordpress 来创建 wordpress 中的帐户。我确定你有一个触发器(当你决定需要在wordpress中创建用户的时候(,当触发器需要触发时,让您的网站将用户信息发送到wordpress中的脚本,在wordpress网站中,你需要创建一个新的php文件,该文件将创建这样的用户:

您的PHP网站决定它有一个用户来检查在您的WordPress网站上拥有帐户的所有原因,因此它将制作wget或curl(对于直接的解决方案(,其中包含需要作为参数传递给WordPress的所有信息,例如

yourWPwebsite.com/createUser.php?username=<?php echo the username ?>&email=<?php echo the user email; ?>&...

然后在WordPress网站的根目录中创建一个createUser.php文件(根据您拥有的设置,您可能需要修改.htaccess,但在大多数设置中它应该可以工作(

在该文件(createUser.php(中,首先通过包含休耕wp-load来包含WordPress.php:

require( 'wp-load.php' ); //if you put this script in another place then root you need to make sure you change the path for this file.

之后,您可以使用任何WordPress功能,以便安全起见,我建议仅接受来自其他站点IP的视图,或者包含某种令牌来验证信息的来源,如果源未经身份验证,则重定向到404或主页或您想要的任何消息,然后阅读get变量(您可能需要对它们进行一些清理(

然后使用休耕 wp 函数创建用户:<?php wp_create_user( $username, $password, $email ); ?>

您可能使用的代码如下所示:

$user_id = username_exists( $user_name );
if ( !$user_id and email_exists($user_email) == false ) {
    $random_password = wp_generate_password( $length=12, $include_standard_special_chars=false );
    $user_id = wp_create_user( $user_name, $random_password, $user_email );
} else {
    $random_password = __('User already exists.  Password inherited.');
}
如果您希望用户具有特定角色,您可以添加角色

管理/编辑插件并创建一个新角色,然后将该角色设置为默认值 此外,如果您想为用户强制使用角色,则需要在上述内容之后添加休耕代码:

$user_id = wp_update_user( array( 'ID' => $user_id, 'role' => "DesiredRoleHere" ) );
使用用户管理插件,

您可以删除用户的配置文件权限以及其他(很多(事情检查像多站点用户管理这样的插件以获得一个想法(其他人可能更好(,仅此而已,然后用户将在您的WordPress网站上拥有一个帐户,其中包含您设置的密码,如果您想对用户进行身份验证,您可以采取类似的步骤,但身份验证脚本将调用wp_authenticate并具有类似于以下内容的脚本:

 $logging = wp_authenticate ($username, $password);
 //then redirect to the page you want to redirect users when they log in

这不是很多编码,但您需要深入了解每个步骤的确切限制。

另一种解决方案可能是使用像 WP API 这样的 API,但我还没有使用它,我不知道您可以做些什么来验证用户并将他/她重定向到您想要的 wp 页面不确定......