函数文档

delete_usermeta()

💡 云策文档标注

概述

delete_usermeta() 是一个已弃用的 WordPress 函数,用于删除用户元数据。自 3.0.0 版本起,建议使用 delete_user_meta() 替代。

关键要点

  • 函数已弃用:自 WordPress 3.0.0 起,应改用 delete_user_meta()。
  • 参数:$user_id(用户 ID,必需)、$meta_key(元数据键,必需)、$meta_value(元数据值,可选,默认为空)。
  • 返回值:删除成功返回 true,如果 $user_id 不是数字则返回 false。
  • 内部操作:包括清理用户缓存、触发 delete_usermeta 和 deleted_usermeta 钩子。

代码示例

function delete_usermeta( $user_id, $meta_key, $meta_value = '' ) {
    _deprecated_function( __FUNCTION__, '3.0.0', 'delete_user_meta()' );
    global $wpdb;
    if ( !is_numeric( $user_id ) )
        return false;
    $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key);

    if ( is_array($meta_value) || is_object($meta_value) )
        $meta_value = serialize($meta_value);
    $meta_value = trim( $meta_value );

    $cur = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) );

    if ( $cur && $cur->umeta_id )
        do_action( 'delete_usermeta', $cur->umeta_id, $user_id, $meta_key, $meta_value );

    if ( ! empty($meta_value) )
        $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s AND meta_value = %s", $user_id, $meta_key, $meta_value) );
    else
        $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) );

    clean_user_cache( $user_id );
    wp_cache_delete( $user_id, 'user_meta' );

    if ( $cur && $cur->umeta_id )
        do_action( 'deleted_usermeta', $cur->umeta_id, $user_id, $meta_key, $meta_value );

    return true;
}

注意事项

  • 此函数已弃用,新代码应避免使用,改用 delete_user_meta()。
  • 函数内部处理元数据值:如果是数组或对象,会序列化;同时会清理键名,只保留字母、数字和下划线。
  • 删除操作会触发相关钩子,并清理缓存以确保数据一致性。

📄 原文内容

Remove user meta data.

Description

See also

Parameters

$user_idintrequired
User ID.
$meta_keystringrequired
Metadata key.
$meta_valuemixedoptional
Metadata value. Default empty.

Return

bool True deletion completed and false if user_id is not a number.

Source

function delete_usermeta( $user_id, $meta_key, $meta_value = '' ) {
	_deprecated_function( __FUNCTION__, '3.0.0', 'delete_user_meta()' );
	global $wpdb;
	if ( !is_numeric( $user_id ) )
		return false;
	$meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key);

	if ( is_array($meta_value) || is_object($meta_value) )
		$meta_value = serialize($meta_value);
	$meta_value = trim( $meta_value );

	$cur = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) );

	if ( $cur && $cur->umeta_id )
		do_action( 'delete_usermeta', $cur->umeta_id, $user_id, $meta_key, $meta_value );

	if ( ! empty($meta_value) )
		$wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s AND meta_value = %s", $user_id, $meta_key, $meta_value) );
	else
		$wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $meta_key) );

	clean_user_cache( $user_id );
	wp_cache_delete( $user_id, 'user_meta' );

	if ( $cur && $cur->umeta_id )
		do_action( 'deleted_usermeta', $cur->umeta_id, $user_id, $meta_key, $meta_value );

	return true;
}

Changelog

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