JetEngine Form如何添加用户下拉菜单 动态填充用户选项
JetEngine表单添加用户下拉选择菜单实现方案
JetEngine表单未内置用户选择专用字段,可通过Select字段+自定义动态选项回调实现,无需安装额外插件,步骤如下:
1. 表单字段基础配置
- 进入目标JetEngine表单编辑页,添加一个*Select(下拉选择)*类型字段
- 找到字段设置中的「动态填充」板块,开启「动态填充选项」开关
- 在「获取选项从」下拉菜单中选择自定义回调
- 记录当前字段设置的
字段ID/Name(例如自定义为select_assigned_user,后续代码需要和该值完全匹配,大小写敏感) - 根据需求配置占位符、是否多选、是否必填等其他参数,先保存表单草稿
2. 添加自定义代码生成用户选项
将以下代码添加到当前主题的functions.php文件中,或使用代码片段管理插件插入(推荐后者,避免主题更新导致代码丢失):
// 注意:将下方钩子中的select_assigned_user替换为你自己设置的Select字段Name add_filter( 'jet-engine/forms/options-list/select_assigned_user', function( $options ) { // 重置默认选项 $options = []; // 用户查询参数,可根据自身需求调整 $query_args = [ // 控制要显示的用户角色,删除该行则展示所有角色用户 'role__in' => ['administrator', 'editor', 'author'], 'orderby' => 'display_name', 'order' => 'ASC', 'fields' => ['ID', 'display_name', 'user_email'], 'number' => -1, // -1为展示所有符合条件的用户,站点用户量超1000时建议改为数字限制单次加载数量 ]; $user_list = get_users( $query_args ); if ( ! empty( $user_list ) ) { // 可选:添加默认空选项,和表单内设置的占位符配合使用 $options[] = [ 'value' => '', 'label' => '请选择用户' ]; // 循环生成下拉选项 foreach ( $user_list as $user ) { $options[] = [ 'value' => $user->ID, // 表单提交时存储的值为用户ID 'label' => sprintf( '%s(%s)', $user->display_name, $user->user_email ) // 下拉显示的文本,可自行调整格式 ]; } } return $options; } );
3. 自定义调整说明
- 若要修改下拉显示的用户信息,直接调整
label对应的字符串拼接逻辑即可,例如需要展示用户昵称可加入$user->nickname - 若需要按用户元数据筛选用户,可在
$query_args中按照WordPress原生get_users的参数规则添加meta_query配置 - 若站点用户量较大需要AJAX懒加载选项,只需将代码中的过滤器钩子替换为
jet-engine/forms/options-list-ajax/select_assigned_user,核心查询逻辑无需修改,同时在表单字段设置中开启Select2的AJAX加载开关即可 - 添加代码后清空站点缓存、JetEngine自身缓存,刷新表单页面即可看到加载完成的用户下拉选项
内容的提问来源于stack exchange,提问作者Lupin
相关产品推荐
相关产品推荐

