You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

ACF用户字段无法使用求助:WordPress新手遇显示及列表异常

问题排查与解决方案

嘿,作为WordPress和ACF新手碰到这些问题很正常,我来帮你一步步拆解解决:

一、为什么update_field存的作者ID没显示?

你当前的代码update_field('video_author', get_current_user_id(), $post_id);可能存在几个关键点的偏差:

  1. 混淆了「当前用户」和「文章作者」
    get_current_user_id()获取的是当前正在操作后台的用户ID(比如你作为管理员编辑文章时,这个值就是你的ID),但你想要存储的是文章本身的作者ID,应该用get_post_field('post_author', $post_id)来获取:

    update_field('video_author', get_post_field('post_author', $post_id), $post_id);
    
  2. 确认ACF字段的「字段键」是否正确
    有时候你在ACF里设置的字段显示名称是「视频作者」,但字段键可能不是video_author(比如自动生成的field_123abcd)。你可以进入ACF字段组编辑页面,点击「显示字段键」(在页面右上角的选项里),确认你要调用的字段键是否和代码里的一致。如果用字段键调用,会更可靠:

    update_field('field_123abcd', get_post_field('post_author', $post_id), $post_id);
    
  3. 确认$post_id是否有效
    你这段代码是在什么场景下运行的?比如是不是在save_post钩子里?如果$post_id没有正确获取到(比如为空或者是错误的ID),数据就存不到对应文章的wp_postmeta里。可以先加个调试:

    if (isset($post_id) && is_numeric($post_id)) {
        update_field('video_author', get_post_field('post_author', $post_id), $post_id);
    } else {
        error_log('Invalid post ID when trying to update video_author field');
    }
    
  4. 前端显示的方式是否正确
    就算数据存到了数据库里,如果你在文章模板里没有正确调用,也看不到作者信息。比如要显示作者名称,你需要这样写:

    $author_id = get_field('video_author');
    if ($author_id) {
        $author = get_userdata($author_id);
        echo '作者:' . esc_html($author->display_name);
    }
    

二、ACF用户字段点击无用户列表显示?

这个问题大概率是字段设置或兼容性问题,按下面的步骤排查:

  • 检查ACF用户字段的设置

    1. 进入字段组的用户字段编辑页面,确认「选择类型」是「下拉选择」「复选框」或「单选按钮」(如果选了「自定义查询」可能需要额外配置);
    2. 看「用户角色」过滤选项,如果设置了只显示特定角色(比如仅「编辑」),但你的网站里没有对应角色的用户,列表就会为空;建议先把这个选项改成「所有角色」测试。
  • 检查浏览器控制台的JS错误
    打开文章编辑页面,按F12打开开发者工具,切换到「控制台」标签,看看有没有ACF相关的JavaScript报错。比如主题的JS代码和ACF的JS冲突,会导致用户列表无法加载。

  • 排查插件/主题冲突

    1. 暂时停用除ACF之外的所有插件,刷新页面看用户列表是否正常;
    2. 如果恢复正常,再逐个启用插件,找到冲突的那个;
    3. 同样可以切换到WordPress默认主题(比如Twenty Twenty-Four),测试是否是主题导致的问题。
  • 确认ACF版本与WordPress版本兼容
    检查你的ACF插件是否是最新版本,老版本的ACF可能和新版WordPress存在兼容性问题,导致用户字段无法正常加载。


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

火山引擎 最新活动