在开发 WordPress 前端用户中心的过程中,会遇到投稿者和订阅者角色的用户不能上传附件的问题。有些用户可能会认为这是 WordPress 的 bug,其实不然,这是 WordPress 在安全性方面的一个设计。在任何 Web 开发的过程中,用户上传文件的动作都是比较危险的,我们不知道别有用心的用户会上传一些什么样的文件。所以为了尽可能的提高安全性,WordPress 索性不给投稿者和订阅者用户在前端上传文件的权限。
通过角色和权限API为投稿者和订阅者用户添加上传文件的权限
在 WordPress 的角色和用户系统中,上传文件的权限是“upload_files”,为了让投稿者和订阅者用户也可以上传文件,我们通过 WordPress 的角色和权限 API 为这两个角色增加上传文件的权限就可以了。
下面的代码是为投稿者用户添加上传文件权限的示例代码,把下面的代码复制到主题的 functions.php 中即可。
if ( current_user_can('contributor') && !current_user_can('upload_files') )
add_action('admin_init', 'allow_contributor_uploads');
function allow_contributor_uploads() {
$contributor = get_role('contributor');
$contributor->add_cap('upload_files');
}
通过媒体处理函数烧过角色和权限的限制
除此之外,我们还可以通过 WordPress 的媒体上传函数来实现前端用户上传文件的功能。通过这些函数实现的文件上传功能是不受 WordPress 角色和权限系统限制的。本站之前已经发布了相关的文件,需要的朋友可前去查看。文章如下: