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

Ultimate Member表单自定义下拉框存储ID而非名称求助

解决Ultimate Member自定义下拉字段存储ID而非俱乐部名称的问题

问题根源分析

你的代码存在几个关键错误,导致Ultimate Member无法正确存储俱乐部名称:

  1. 表名错误:$wpdb->prefix已经包含默认的wp_前缀,拼接成$wpdb->prefix . 'wp_Club'会生成wp_wp_Club,这不是你的实际表名。
  2. 字段名不匹配:SQL查询的是ClubNames字段,但循环中读取的是$row['Club'],字段名不一致会导致数组为空,UM只能用数组索引(类似ID)作为存储值。
  3. 数组格式错误:Ultimate Member的下拉字段要求返回关联数组(键为存储值,值为显示文本),你之前的索引数组会让UM默认存储数组的索引序号。
  4. 函数名大小写不一致:函数定义是ClubCallback(大写C),但add_shortcode里写的是clubCallback(小写c),PHP函数名大小写敏感,会导致回调失效。

修正后的代码

function ClubCallback() {
    global $wpdb;

    // 修正表名:去掉重复的wp_前缀
    $table_name = $wpdb->prefix . 'Club';

    // 查询时确保字段名和表中实际字段一致,这里假设字段是ClubNames
    $query = "SELECT ClubNames FROM $table_name";
    $results = $wpdb->get_results($query, ARRAY_A);

    $club_options = array();

    // 构造关联数组:键和值都用俱乐部名称,这样存储的就是名称而非索引
    foreach ($results as $row) {
        $club_name = $row['ClubNames'];
        if (!empty($club_name)) {
            $club_options[$club_name] = $club_name;
        }
    }

    // 去重并返回
    return array_unique($club_options);
}
// 修正函数名大小写,和定义一致
add_shortcode('ClubCallback', 'ClubCallback');

额外注意事项

  • 确认你的俱乐部表中实际存储名称的字段是ClubNames,如果字段名不同(比如club_name),要同步修改SQL查询和循环中的字段名。
  • 确保该自定义字段在Ultimate Member的字段设置中,回调函数名称填写的是ClubCallback,和代码中的短码/函数名一致。

内容的提问来源于stack exchange,提问作者Diamond D

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 17:23:20