前台投稿页选图上传,提示抱歉你没有上传文件的权限,管理员在同一页面操作却一切正常,影响投稿流程。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
$role = get_role('contributor');
$role->add_cap('upload_files');
// 表单
wp_nonce_field('front_upload', 'front_nonce');
投稿者角色缺少上传文件的能力项,或者表单没有带校验字段,请求在权限检查这一步就被挡了,两种原因表现一样,先查权限再查校验。这一点先确认清楚,后面就不用反复试。
碰到「WordPress 前台投稿上传」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。
改完隔一天再看一次,当场正常不代表能稳住。
具体做法是,先确认投稿者角色的上传权限是不是已经打开了;检查投稿表单里有没有输出校验用的隐藏字段;处理端再用校验函数兜一次,别只相信前端页面。
改完照着核一遍,投稿者能上传并插入图片,媒体库里只看到自己的附件,管理员不受影响。
