如何在 WordPress 中随机显示 20 名订阅用户(含头像)
发布时间 - 2026-01-29 00:00:00 点击率:次本文详解如何在 wordpress 网站中从所有订阅者中**真正随机选取 20 人**并展示其头像,解决 `get_users()` 默认不支持 `orderby => 'rand'` 的限制,提供可直接部署的两步查询方案。
在 WordPress 开发中,get_users() 函

以下是推荐的三段式实现方案,兼顾性能、可读性与兼容性(适用于 WordPress 4.0+):
✅ 步骤一:获取全部订阅者 ID 列表
使用 'fields' => 'ID' 参数极大提升查询效率——仅返回用户 ID,避免加载冗余字段(如 user_login、user_email 等),尤其当订阅者数量较大时效果显著:
'subscriber',
'fields' => 'ID'
);
$user_ids = get_users($args); // 返回索引数组,如 [101, 205, 337, ...]✅ 步骤二:随机抽取 20 个 ID 并查询用户详情
利用 PHP 原生函数 array_rand() 从 $user_ids 中无放回随机选取 20 个键名,再通过 'include' 参数精准拉取对应用户数据。注意:array_rand() 返回的是键(key),需用 array_values() 提取值,或直接用于 include(因 get_users() 的 include 接受数值数组):
// 随机选取最多 20 个 ID(若订阅者不足 20 人,则返回全部)
$random_keys = array_rand($user_ids, min(20, count($user_ids)));
$random_ids = array_values(array_intersect_key($user_ids, array_flip($random_keys)));
// 查询这 20 个用户的完整信息
$args = array(
'include' => $random_ids,
'orderby' => 'user_nicename',
'order' => 'ASC'
);
$random_users = get_users($args);⚠️ 关键注意事项: 若订阅用户总数 少于 20 人,array_rand() 会触发警告。上述 min(20, count(...)) 可安全兜底; array_rand() 返回的是原数组的键名,而 $user_ids 是索引数组(键为 0,1,2...),因此可直接用 array_values() 转换为纯数值 ID 数组; 'include' 参数会自动忽略不存在的 ID,无需额外校验。
✅ 步骤三:渲染头像列表
最终遍历 $random_users 输出头像。建议使用 $user->ID(而非 $user->user_email)调用 get_avatar(),更可靠且支持本地头像缓存:
- ID, 96); ?>
? 进阶优化建议
- 缓存随机结果:对高流量站点,可将 $random_ids 存入 Transient(如 set_transient('random_subscribers', $random_ids, HOUR_IN_SECONDS)),每小时刷新一次,降低数据库压力;
- 添加备用排序:若需视觉上更“随机”,可在最终输出前用 usort() 对 $random_users 按 rand() 二次打乱(但通常非必需);
-
错误处理:增加 if (empty($random_users)) { echo '
暂无订阅用户
'; } 提升健壮性。
此方案彻底规避了 SQL 层面的 ORDER BY RAND() 性能陷阱(全表扫描),以两次轻量级查询达成高效、可控的随机展示目标,是 WordPress 用户随机化展示的最佳实践。
# php
# word
# wordpress
# ai
# sql
# echo
# if
# 数值数组
# count
# include
# 数据库
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速使用云服务器搭建个人网站?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
Swift中switch语句区间和元组模式匹配
Laravel如何实现事件和监听器?(Event & Listener实战)
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
如何基于云服务器快速搭建网站及云盘系统?
如何实现javascript表单验证_正则表达式有哪些实用技巧
清除minerd进程的简单方法
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
如何用VPS主机快速搭建个人网站?
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
无锡营销型网站制作公司,无锡网选车牌流程?
魔方云NAT建站如何实现端口转发?
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
新三国志曹操传主线渭水交兵攻略
如何在阿里云通过域名搭建网站?
如何利用DOS批处理实现定时关机操作详解
python中快速进行多个字符替换的方法小结
canvas 画布在主流浏览器中的尺寸限制详细介绍
如何快速搭建高效WAP手机网站吸引移动用户?
如何正确下载安装西数主机建站助手?
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
googleplay官方入口在哪里_Google Play官方商店快速入口指南
微信公众帐号开发教程之图文消息全攻略
Laravel API资源类怎么用_Laravel API Resource数据转换
jQuery 常见小例汇总
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
如何安全更换建站之星模板并保留数据?
微信推文制作网站有哪些,怎么做微信推文,急?
三星网站视频制作教程下载,三星w23网页如何全屏?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
5种Android数据存储方式汇总
Laravel如何使用.env文件管理环境变量?(最佳实践)
郑州企业网站制作公司,郑州招聘网站有哪些?
详解Android图表 MPAndroidChart折线图
米侠浏览器网页背景异常怎么办 米侠显示修复
在Oracle关闭情况下如何修改spfile的参数
如何获取PHP WAP自助建站系统源码?
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
Laravel如何配置和使用缓存?(Redis代码示例)
Laravel如何生成URL和重定向?(路由助手函数)
VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
Laravel如何创建自定义中间件?(Middleware代码示例)
网站制作软件免费下载安装,有哪些免费下载的软件网站?
企业网站制作这些问题要关注
Laravel怎么调用外部API_Laravel Http Client客户端使用

