更新用户元和更新用户选项之间的差异

时间:2016-05-14 作者:mpsbhat

谁能解释一下update_user_metaupdate_user_option 在哪些情况下两者都可以使用?

2 个回复
最合适的回答,由SO网友:Sumit 整理而成

用外行的话说,没有什么大区别!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().

Purpose of update_user_option() function

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

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

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

SO网友:Jarod Thornton

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

用户选项支持特定于博客的选项,在多站点中很有用。用户元数据基于特定于用户id的元数据,如配置文件信息。

这些参数实际上是非常不同的。User option有$User\\u id、$option\\u name、$newvalue、$global,User meta有$User\\u id、$meta\\u key、$meta\\u value、$prev\\u value。

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

选项

wp\\u用户级别wp\\u用户设置wp\\u功能wp\\u用户设置时间

姓名姓氏昵称富编辑

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

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

codex页面示例提供了实际使用。

相关推荐

set a user-meta key as avatar

我有一个名为“meta kay”的用户;阿凡达;;此值包含用户上载的图像的URL。如何将此元值设置为用户化身?我使用此代码,但不工作add_filter( \'get_avatar\', \'slug_get_avatar\', 10, 5 ); function slug_get_avatar( $avatar, $id_or_email, $size, $default, $alt ) { //If is email, try and find user ID