问题描述

任何人都可以解释 update_user_metaupdate_user_option 有什么区别,哪些情况可以使用?

最佳解决方案

在外行方面没有什么重大的区别! 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 时) 。

如果将最后一个参数 $global 设置为 true,与 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 。将来如果您将单个站点转换为多站点,信息将仅在主站点上可用。

当您认为某些信息依赖于 site +用户时,请使用此功能。不像名字,电子邮件等,因为这些信息属于用户和站点独立。

次佳解决方案

两者都将数据写入 「usermeta」 表中。存储在 usermeta 表中的用户选项保留 wordpress 表前缀,例如而用户 meta 也存储在 usermeta 表中。

用户选项支持 blog-specific 选项,在多站点中有用。用户元基于用户 ID 特定的元数据,如简档信息。

事实上这些参数是非常不同的。用户选项有 $ user_id,$ option_name,$ newvalue,$ global 和 user meta 有 $ user_id,$ meta_key,$ meta_value,$ prev_value 。

以下是这两个选项和用户 usermeta 的一些值。

选项

  • wp_user_level

  • wp_user-settings

  • wp_capabilities

  • wp_user-settings-time

用户

  • first_name

  • last_name

  • 昵称

  • 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

抄本页的例子提供了现实世界的使用。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。