
非管理员用户上传媒体时,会收到以下错误:

我检查过的东西:

如果有人有类似的问题,我愿意提出建议。谢谢。
从wp-admin/include/ ajax-action.php中进行更新,我删除了以下部分:
if ( isset( $_REQUEST['post_id'] ) ) {
$post_id = $_REQUEST['post_id'];
if ( ! current_user_can( 'edit_post', $post_id ) ) {
echo wp_json_encode( array(
'success' => false,
'data' => array(
'message' => __( "You don't have permission to attach files to this post." ),
'filename' => $_FILES['async-upload']['name'],
)
) );
wp_die();
}
}我意识到这只是一个查看用户功能的检查点,但我不完全理解为什么删除这个部分有助于解决这个问题。现在测试用户可以成功上传媒体(媒体上传也成功了),没有权限错误,底部的“上传媒体”按钮不再灰化,这样我就可以正常上传了。谢谢
发布于 2017-12-31 20:00:57
根本不建议删除核心WP代码!
这种错误的原因通常是宿主环境中的PHP上传限制。请参见如何更改PHP的示例:更改上载文件的最大大小
但是看看你的post类型的截图,看起来你的角色甚至不能编辑一篇文章。我首先要启用这个功能:edit_posts。也许还有其他的帖子相关的卡帕比。
作为参考,这里有一个有用的表来帮助理解Wordress角色和功能:能力与角色表
发布于 2018-09-25 07:28:48
只需更新wp/include/ ajax-action.php文件,而不是“edit_post”,它应该是“edit_posts”。
if ( isset( $_REQUEST['post_id'] ) ) {
$post_id = $_REQUEST['post_id'];
if ( ! current_user_can( 'edit_posts', $post_id ) ) {
echo wp_json_encode( array(
'success' => false,
'data' => array(
'message' => __( "You don't have permission to attach files to this post." ),
'filename' => $_FILES['async-upload']['name'],
)
) );
wp_die();
}
}发布于 2015-08-07 20:02:36
有多种解决方案,取决于根本原因.
如果您的角色损坏了,一种解决方案似乎可以工作,那就是安装一个编辑WordPress角色的插件。我不知道你到底需要什么角色,但我认为这是其中之一。我刚刚注意到你检查了这些,所以你可能会超越这些,你是否使用了一个角色编辑插件?
我猜用户需要edit_post,因为上传图片和附加到帖子是编辑文章。
unfiltered_upload
upload_files 另一种解决方案是在允许或有访问权限的情况下添加一些PHP代码。将其添加到PHP文件中,例如,header.php (临时)并运行它。
$user_role = 'author'; // Change user role here
$contributor = get_role($user_role);
$contributor->add_cap('upload_files');这将赋予作者上传文件的能力。
第三种解决方案有时解决这个问题的方法是尝试为设置->媒体中的上传目录添加完整的文件路径。
https://stackoverflow.com/questions/31885086
复制相似问题