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.
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. |