WordPress获取同account_parent用户的designs_save_user_list数据
数据表参考
对应WordPress标准wp_usermeta用户元数据表结构,核心字段为user_id、meta_key、meta_value。
需求说明
- 查询所有配置了
account_parent元字段、且该字段值与当前登录用户的account_parent值完全一致的用户ID - 批量拉取上述匹配到的所有用户对应的
designs_save_user_list元数据
现存问题
现有代码仅支持获取当前登录用户单个账号下的designs_save_user_list数据,无法批量拉取同属一个account_parent分组下所有用户的对应数据。
原有代码片段:
if(is_user_logged_in()){ $user_ID = get_current_user_id(); $get_designs_list = get_user_meta($user_ID, 'designs_save_user_list', true);
实现代码
使用WordPress原生WP_User_Query完成用户匹配查询,兼容站点表前缀配置、自动走系统用户缓存,性能比手写原生SQL更稳定:
if (is_user_logged_in()) { $current_uid = get_current_user_id(); // 获取当前登录用户所属的父账号ID $current_parent_val = get_user_meta($current_uid, 'account_parent', true); $group_design_lists = []; if ($current_parent_val) { // 查询所有同属该父账号的用户ID $matched_users = new WP_User_Query([ 'meta_key' => 'account_parent', 'meta_value' => $current_parent_val, 'fields' => 'ID', 'cache_results' => true // 开启查询缓存 ]); $matched_uids = $matched_users->get_results(); if ($matched_uids) { foreach ($matched_uids as $uid) { $user_designs = get_user_meta($uid, 'designs_save_user_list', true); if ($user_designs) { $group_design_lists[$uid] = $user_designs; } } } } // $group_design_lists 即为最终需要的同组所有用户的设计保存列表数据,数组键为对应用户ID }
优化提示:如果站点同组用户量超过100,可给查询结果加10-15分钟的临时缓存,减少重复数据库查询开销。
内容的提问来源于stack exchange,提问作者Rafael
相关产品推荐
相关产品推荐

