函数文档

get_usermeta()

💡 云策文档标注

概述

get_usermeta() 是一个已弃用的 WordPress 函数,用于检索用户元数据。它已被 get_user_meta() 替代,自 3.0.0 版本起不建议使用。

关键要点

  • 函数已弃用:自 WordPress 3.0.0 起,应使用 get_user_meta() 替代。
  • 参数:接受 $user_id(必需,整数)和 $meta_key(可选,字符串),默认值为空。
  • 返回值:根据元数据数量返回单个值或数组,失败时返回 false。
  • 注意事项:$user_id 必须为数字,否则返回 false;meta_key 不支持连字符等特殊字符。

代码示例

function get_usermeta( $user_id, $meta_key = '' ) {
    _deprecated_function( __FUNCTION__, '3.0.0', 'get_user_meta()' );
    global $wpdb;
    $user_id = (int) $user_id;

    if ( !$user_id )
        return false;

    if ( !empty($meta_key) ) {
        $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key);
        $user = wp_cache_get($user_id, 'users');
        // Check the cached user object.
        if ( false !== $user && isset($user->$meta_key) )
            $metas = array($user->$meta_key);
        else
            $metas = $wpdb->get_col( $wpdb->prepare("SELECT meta_value FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) );
    } else {
        $metas = $wpdb->get_col( $wpdb->prepare("SELECT meta_value FROM $wpdb->usermeta WHERE user_id = %d", $user_id) );
    }

    if ( empty($metas) ) {
        if ( empty($meta_key) )
            return array();
        else
            return '';
    }

    $metas = array_map('maybe_unserialize', $metas);

    if ( count($metas) === 1 )
        return $metas[0];
    else
        return $metas;
}

注意事项

  • 此函数已弃用,新代码应避免使用,改用 get_user_meta()。
  • meta_key 参数通过正则表达式过滤,仅允许字母、数字和下划线,因此不支持连字符等字符。
  • 函数内部使用缓存和数据库查询优化性能,但弃用状态可能影响未来兼容性。

📄 原文内容

Retrieve user metadata.

Description

If $user_id is not a number, then the function will fail over with a ‘false’ boolean return value. Other returned values depend on whether there is only one item to be returned, which be that single item type. If there is more than one metadata value, then it will be list of metadata values.

See also

Parameters

$user_idintrequired
User ID
$meta_keystringoptional
Metadata key. Default empty.

Return

mixed

Source

function get_usermeta( $user_id, $meta_key = '' ) {
	_deprecated_function( __FUNCTION__, '3.0.0', 'get_user_meta()' );
	global $wpdb;
	$user_id = (int) $user_id;

	if ( !$user_id )
		return false;

	if ( !empty($meta_key) ) {
		$meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key);
		$user = wp_cache_get($user_id, 'users');
		// Check the cached user object.
		if ( false !== $user && isset($user->$meta_key) )
			$metas = array($user->$meta_key);
		else
			$metas = $wpdb->get_col( $wpdb->prepare("SELECT meta_value FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) );
	} else {
		$metas = $wpdb->get_col( $wpdb->prepare("SELECT meta_value FROM $wpdb->usermeta WHERE user_id = %d", $user_id) );
	}

	if ( empty($metas) ) {
		if ( empty($meta_key) )
			return array();
		else
			return '';
	}

	$metas = array_map('maybe_unserialize', $metas);

	if ( count($metas) === 1 )
		return $metas[0];
	else
		return $metas;
}

Changelog

Version Description
3.0.0 Deprecated. Use get_user_meta()
2.0.0 Introduced.

User Contributed Notes