为何WordPress用户元键未创建/元值无法获取?
问题分析与修正方案
核心错误点
- 用户ID传递错误:
wp_get_current_user()返回的是WP_User对象,而get_user_meta()和update_user_meta()需要传入整数类型的用户ID,直接传对象会导致函数无法正确识别用户。 - 元值判断逻辑错误:
get_user_meta()默认返回数组(未指定第三个参数时),你用$userCredit == ""的判断永远不成立,因为数组和空字符串无法相等。若要获取单个元值,需将第三个参数设为true,此时元键不存在时会返回false。
修正后的代码
// 直接获取当前登录用户的ID(未登录时返回0,更安全) $user_id = get_current_user_id(); $meta_key = "ai_anna_credit"; $meta_value = 150; // 第三个参数设为true,获取单个元值,不存在则返回false $userCredit = get_user_meta( $user_id, $meta_key, true ); // 元值不存在时创建并赋值 if ( !$userCredit ) { update_user_meta( $user_id, $meta_key, $meta_value ); $userCredit = get_user_meta( $user_id, $meta_key, true ); }
额外优化建议
如果代码可能在未登录环境下执行,建议加上登录判断,避免无效操作:
if ( is_user_logged_in() ) { $user_id = get_current_user_id(); $meta_key = "ai_anna_credit"; $meta_value = 150; $userCredit = get_user_meta( $user_id, $meta_key, true ); if ( !$userCredit ) { update_user_meta( $user_id, $meta_key, $meta_value ); $userCredit = get_user_meta( $user_id, $meta_key, true ); } }
内容的提问来源于stack exchange,提问作者sw123456
相关产品推荐
相关产品推荐

