You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在WordPress中如何获取当前用户的特定格式用户元数据

获取特定格式的用户元数据及提取用户ID列表

要获取当前用户所有键为add-user-id-[用户ID]格式的元数据并提取其中的用户ID列表,可以用以下两种方法实现:

方法一:直接查询数据库(高效推荐)

通过$wpdb执行SQL查询匹配元键前缀,性能更优,适合数据量较大的场景:

global $wpdb;
$current_user_id = get_current_user_id();

// 查询所有以add-user-id-开头的元键
$meta_rows = $wpdb->get_results(
    $wpdb->prepare(
        "SELECT meta_key FROM {$wpdb->usermeta} WHERE user_id = %d AND meta_key LIKE %s",
        $current_user_id,
        'add-user-id-%'
    )
);

$user_ids = [];
if (!empty($meta_rows)) {
    foreach ($meta_rows as $row) {
        // 拆分出用户ID部分
        $parts = explode('add-user-id-', $row->meta_key);
        if (isset($parts[1]) && is_numeric($parts[1])) {
            $user_ids[] = (int)$parts[1];
        }
    }
}

// 去除重复的用户ID
$user_ids = array_unique($user_ids);

方法二:获取所有元数据后过滤(适合小数据量)

先获取当前用户的全部元数据,再过滤出符合前缀的键并提取ID:

$current_user_id = get_current_user_id();
$all_user_meta = get_user_meta($current_user_id);

$user_ids = [];
foreach ($all_user_meta as $meta_key => $meta_value) {
    // 检查元键前缀是否匹配
    if (str_starts_with($meta_key, 'add-user-id-')) {
        $user_id = str_replace('add-user-id-', '', $meta_key);
        if (is_numeric($user_id)) {
            $user_ids[] = (int)$user_id;
        }
    }
}

// 去重处理
$user_ids = array_unique($user_ids);

补充提示

  • 如果你的PHP版本低于8.0,str_starts_with()无法使用,可以替换为substr($meta_key, 0, 13) === 'add-user-id-'(13是add-user-id-的字符长度)
  • 若需要同时获取元数据的值,可在SQL查询中加入meta_value字段,或在第二种方法中直接使用$meta_value变量

内容的提问来源于stack exchange,提问作者arena arens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 00:02:09