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

非管理员用户无法使用ACF form文件上传的问题求助

问题解决方案

一、解决自定义角色冲突问题

你遇到的「user」角色权限不生效的核心原因是:user是WordPress的保留角色slug,手动创建同名角色会被系统覆盖,导致添加的权限无法生效。解决步骤:

  • 删除旧角色并创建不冲突的新角色,比如client_user:
    // 先移除已存在的冲突角色
    remove_role('user');
    // 创建新的自定义角色
    add_role( 'client_user', __('Client User'),
        array(
            'read'              => true,
            'upload_files'      => true,
            'edit_posts'        => true,
            'edit_pages'        => true,
            // 补充ACF上传器所需的附加权限
            'edit_attachments'  => true,
            'publish_posts'     => true,
            'edit_technical_brief' => true, // 匹配你的自定义文章类型权限
        )
    );
    
  • 将原「user」角色的用户切换到新角色,或重新创建测试用户。

二、确保ACF表单与自定义文章类型的权限匹配

  1. 你的acf_form已设置'uploader' => 'wp',但需确保ACF文件上传字段的设置中:
    • 允许的文件类型包含你需要的格式(包括txt、rtf)
    • 未勾选「仅管理员可上传」的限制选项
  2. 给自定义文章类型technical_brief注册时,需关联对应权限组,避免权限不匹配:
    'capabilities' => array(
        'edit_post'          => 'edit_technical_brief',
        'read_post'          => 'read_technical_brief',
        'delete_post'        => 'delete_technical_brief',
        'edit_posts'         => 'edit_technical_briefs',
        'publish_posts'      => 'publish_technical_briefs',
    ),
    

三、解决txt/rtf文件上传失败问题

  1. 添加WordPress允许的文件类型:WP默认不支持rtf上传,需手动添加规则:
    add_filter('upload_mimes', 'allow_custom_file_types');
    function allow_custom_file_types($mimes) {
        $mimes['txt'] = 'text/plain';
        $mimes['rtf'] = 'application/rtf';
        return $mimes;
    }
    
  2. 检查服务器限制:查看php.ini中的upload_max_filesize和post_max_size,确保文件大小在限制范围内;部分服务器会拦截txt文件,需联系主机商或修改.htaccess解除限制。
  3. 排查安全插件:若安装了Wordfence、iThemes Security等插件,需在设置中添加允许txt/rtf文件上传的规则。

四、验证测试

用新创建的client_user角色登录,刷新页面后点击ACF表单上传按钮,确认WP媒体上传器正常弹出;上传txt/rtf文件并提交表单,检查媒体库及对应technical_brief文章,确认附件是否关联成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:55:25