在开发 WordPress 前端用户中心的过程中,会遇到投稿者和订阅者角色的用户不能上传附件的问题。有些用户可能会认为这是 WordPress 的 bug,其实不然,这是 WordPress 在安全性方面的一个设计。在任何 Web 开发的过程中,用户上传文件的动作都是比较危险的,我们不知道别有用心的用户会上传一些什么样的文件。所以为了尽可能的提高安全性,WordPress 索性不给投稿者和订阅者用户在前端上传文件的权限。

通过角色和权限API为投稿者和订阅者用户添加上传文件的权限

在 WordPress 的角色和用户系统中,上传文件的权限是“upload_files”,为了让投稿者和订阅者用户也可以上传文件,我们通过 WordPress 的角色和权限 API 为这两个角色增加上传文件的权限就可以了。

QQ20151018-0

下面的代码是为投稿者用户添加上传文件权限的示例代码,把下面的代码复制到主题的 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 角色和权限系统限制的。本站之前已经发布了相关的文件,需要的朋友可前去查看。文章如下: