update_user_meta和update_user_option之间的区别


11

谁能解释之间有什么区别update_user_meta,并update_user_option与其中场景都可以用吗?

Answers:


8

用外行人来说没有什么大的不同!内部update_user_option()使用update_user_meta()。唯一的区别是update_user_option(),如果在多站点中,则将选项名称加上数据库表前缀+博客ID前缀;如果是在单站点安装中,则仅使用表前缀。

看一下代码 update_user_option()

/**
 * Update user option with global blog capability.
 *
 * User options are just like user metadata except that they have support for
 * global blog options. If the 'global' parameter is false, which it is by default
 * it will prepend the WordPress table prefix to the option name.
 *
 * Deletes the user option if $newvalue is empty.
 *
 * @since 2.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param int    $user_id     User ID.
 * @param string $option_name User option name.
 * @param mixed  $newvalue    User option value.
 * @param bool   $global      Optional. Whether option name is global or blog specific.
 *                            Default false (blog specific).
 * @return int|bool User meta ID if the option didn't exist, true on successful update,
 *                  false on failure.
 */
function update_user_option( $user_id, $option_name, $newvalue, $global = false ) {
    global $wpdb;

    if ( !$global )
        $option_name = $wpdb->get_blog_prefix() . $option_name;

    return update_user_meta( $user_id, $option_name, $newvalue );
}

您的选项名称以表前缀+博客ID为前缀(仅当ID不同于1和0时)。

如果将最后一个参数设置为$globaltrue则与没什么区别update_user_meta()

update_user_option()功能目的

与其他表格不同,WordPress不会为每个站点的usermeta创建单独的表格。它将所有博客的用户信息保存在一个usermeta表中(在多站点中)。它只是为每个站点的键名加上前缀,blog prefix例如,博客ID 4 wp_capabilities存储为wp_4_capabilities

因此update_user_option(),例如,您将使用保存的任何信息key_name_abc将成为wp_key_name_abc多站点或单站点安装中的主站点。将来,如果您将单个站点转换为多站点,则该信息将仅在主站点中可用。

当您认为某些信息也取决于站点+用户时,请使用此功能。不喜欢姓名,电子邮件等,因为这些信息属于用户和网站无关。


7

两者都将其数据写入“ usermeta”表中。存储在usermeta表中的用户选项保留wordpress表前缀,例如wp_,而存储在usermeta表中的用户meta则没有。

用户选项支持特定于博客的选项,在多站点中很有用。用户元数据基于特定于用户ID的元数据,例如个人资料信息。

实际上,这些参数完全不同。用户选项具有$ user_id,$ option_name,$ newvalue,$ global,而用户meta具有$ user_id,$ meta_key,$ meta_value,$ prev_value。

这是选项和用户usermeta的一些值。

选件

  • wp_user_level
  • wp_user-settings
  • wp_capabilities
  • wp_user-settings-time

用户

  • 名字
  • 昵称
  • rich_editing
  • show_admin_bar_front
  • admin_color

https://codex.wordpress.org/Function_Reference/update_user_option#Parameters

https://codex.wordpress.org/Function_Reference/update_user_meta#Parameters

Codex页面示例提供了真实的用法。


1
您能更清楚地知道这些存储在哪里吗?您的第一句话表明它们存储在同一位置,但是您的第二句话暗示它们不在同一位置,也许一个明确的示例会更好?请记住,答案应该是自包含的,所以他们仍然linkrot集之后有意义食品法典委员会也保持很差,由devhub所取代。
汤姆Ĵ诺埃尔

@TomJNowell这些可以在wp-includes / user.php中找到-您可以在usermeta表中找到meta和options的值。我将编辑答案大声笑
贾默森,2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.