【问题标题】:Can i use username instead of user id in wordpress, ignoring wp_users table?我可以在wordpress中使用用户名而不是用户ID,而忽略wp_users表吗?
【发布时间】:2014-07-11 08:32:52
【问题描述】:

我知道 wordpress 用用户 id 映射数据库中帖子和 cmets 的数据。

例如,在wp_posts表中,post_author列对应发帖的用户id,在wp_cmets表中, user_id 列对应于对帖子发表评论的用户 ID。

但我想要实现的是使用 username 值而不是用户 id 来识别用户。因为我正在开发一种功能,以便用户将在 wordpress 之外进行身份验证,所以他们的详细信息不会插入到 wordpress 数据库(wp_users 表)中。我正在使用自定义会话将用户的会话存储在 wordpress 中,在成功验证后存储我从第三方站点收到的用户的 用户名

如上所述,我正在考虑以下几个选项:

  • 使用挂钩来更改通过用户名而不是用户 ID 映射/识别用户的功能。
  • 创建实现此功能的新插件
  • 在 wordpress 中创建新表,并使用它们来存储用户名以及帖子/cmets。

谁能指导我正确的道路? 请注意:

  • 我只想忘记 wp_users 表。我不想碰它。我既不会从中获取任何东西,也不会在其中插入任何东西。所以我只想将用户登录名插入到其他相关表中,例如 wp_postswp_cmets,可能是通过向它们添加新列。
  • 我也不想更改wordpress的核心文件,因为我担心我以后无法更新wordpress。但我相信数据库是可以改变的。

【问题讨论】:

  • 在 wp_users 表中为“在 wordpress 之外进行身份验证”用户创建记录会简单得多,不是吗?否则听起来就像重写 wordpress。
  • 您可以将该用户名设置为帖子元,然后使用该帖子元来获取该特定用户的帖子。无需创建任何表格。
  • @AD7six 我的主要目的是不在 wp_users 表中创建新记录。因为我不想将它与成千上万的用户一起转储,这些用户在 wordpress 之外进行身份验证。用户通过身份验证后,我只想让他模仿一个角色(这将由外部身份验证服务决定),而不是在数据库中实际存储任何内容。
  • @shasi 如果您拥有数千名用户,为什么创建数千名用户?或者创建用户来代表一个角色,当他们进行身份验证时,为他们分配该用户。似乎不太可能按照您的要求执行/可能 - 但由于我不使用 WP - 我不是有权这样说的人。

标签: php database wordpress


【解决方案1】:

你不想。用户名是可修改的,它们不是完全唯一的,并且带有许多其他相关问题。

拆分您的应用程序。如果您想使用另一种身份验证方法,请使用您喜欢的任何方法对其进行身份验证。一旦您知道它是哪个用户,您就可以从数据库中获取用户 ID 并正确生成 Wordpress 登录。

您的修改应避免对您不太熟悉的系统内部进行大规模的彻底更改。那就是疯狂。相反,专注于构建一个可以满足您需要的附加组件,然后尽快将控制权交还给主系统。通过这种方式,您可以避免重复大量的工作。

【讨论】:

    【解决方案2】:

    我猜你是通过说用户名来引用用户登录名,对吗? 如果是这样,那么是的,您可以实现这一点,因为 userlogin 与 userid 一样是唯一的,您只需查询 wp_users 表即可获取 userid 。 如果没有,则无法保证您通过用户名获得正确的用户信息,正如@mrdoombringer 在之前的回答中提到的那样

    【讨论】:

    • 是的,我指的是用户登录名。但正如我在编辑的问题中所说,我不想使用或触摸 wp_users 表。我将只使用 wp_postswp_cmets 表来通过用户名识别用户。所以我可能想在这两个表中添加新列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    相关资源
    最近更新 更多