非管理员用户无法使用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表单与自定义文章类型的权限匹配
- 你的
acf_form已设置'uploader' => 'wp',但需确保ACF文件上传字段的设置中:- 允许的文件类型包含你需要的格式(包括txt、rtf)
- 未勾选「仅管理员可上传」的限制选项
- 给自定义文章类型
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文件上传失败问题
- 添加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; } - 检查服务器限制:查看php.ini中的
upload_max_filesize和post_max_size,确保文件大小在限制范围内;部分服务器会拦截txt文件,需联系主机商或修改.htaccess解除限制。 - 排查安全插件:若安装了Wordfence、iThemes Security等插件,需在设置中添加允许txt/rtf文件上传的规则。
四、验证测试
用新创建的client_user角色登录,刷新页面后点击ACF表单上传按钮,确认WP媒体上传器正常弹出;上传txt/rtf文件并提交表单,检查媒体库及对应technical_brief文章,确认附件是否关联成功。
内容的提问来源于stack exchange,提问作者WickedDice
相关产品推荐
相关产品推荐

