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

ACF用户资料自定义字段切换内容显示问题排查

问题分析与修复

你的代码存在几个关键问题,导致无输出且无报错:

  • 变量名错误:你定义了$user_id = get_current_user_id();,但调用get_field时用了未定义的$id,应该改为"user_{$user_id}",否则ACF无法定位到对应用户的字段数据。
  • 转义引号解析问题:代码里的"是HTML转义字符,PHP无法正确识别,直接替换成普通双引号或单引号即可。
  • 缺少登录状态判断:如果用户未登录,get_current_user_id()会返回0,此时查询用户字段没有意义,应该先判断用户是否登录,避免无效操作。
  • 可选验证步骤:可以临时添加var_dump($variable);查看字段值是否正确获取,确认ACF字段键capa_statut和后台设置的完全一致。

修正后的代码

add_shortcode('pdf-capa-button', 'capa_btn');

function capa_btn() {   
    // 先判断用户是否登录
    if (!is_user_logged_in()) {
        return '<p>请先登录查看内容</p>';
    }
    
    $user_id = get_current_user_id();
    // 修正变量名,使用正确的用户ID
    $variable = get_field('capa_statut', "user_{$user_id}");      
    $content = '';
    
    // 直接用普通引号匹配选项值
    if ($variable == "CAPA Approved") {
        $content .= '<p>You are approved!</p>';  
    }
    // 可扩展其他选项的判断逻辑
    // elseif ($variable == "Pending") {
    //     $content .= '<p>Your request is pending.</p>';
    // }
    
    return $content;
}

额外验证点:

  • 确认ACF字段组已设置为关联“用户”位置;
  • 确认下拉选项的值确实是CAPA Approved(注意大小写和空格,ACF下拉的选项值与显示文本可能不同,要匹配值而非显示文本)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 12:55:12