首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Wordpress上出错“您没有将文件附加到这个帖子的权限”

在Wordpress上出错“您没有将文件附加到这个帖子的权限”
EN

Stack Overflow用户
提问于 2015-08-07 19:15:47
回答 4查看 9.9K关注 0票数 9

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

我检查过的东西:

  1. Wp-内容/上传和所有子文件夹有权限755。
  2. 对于media_upload,测试用户(获得此错误的用户)的核心功能和自定义设置为“是”。请参见下面的图像:

  1. 关闭所有插件,问题保持不变。
  2. 据我所知,上周早些时候,用户能够上传图片。自那时以来,代码中没有进行任何更改。

如果有人有类似的问题,我愿意提出建议。谢谢。

从wp-admin/include/ ajax-action.php中进行更新,我删除了以下部分:

代码语言:javascript
复制
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();
    }
    }

我意识到这只是一个查看用户功能的检查点,但我不完全理解为什么删除这个部分有助于解决这个问题。现在测试用户可以成功上传媒体(媒体上传也成功了),没有权限错误,底部的“上传媒体”按钮不再灰化,这样我就可以正常上传了。谢谢

EN

回答 4

Stack Overflow用户

发布于 2017-12-31 20:00:57

根本不建议删除核心WP代码!

这种错误的原因通常是宿主环境中的PHP上传限制。请参见如何更改PHP的示例:更改上载文件的最大大小

但是看看你的post类型的截图,看起来你的角色甚至不能编辑一篇文章。我首先要启用这个功能:edit_posts。也许还有其他的帖子相关的卡帕比。

作为参考,这里有一个有用的表来帮助理解Wordress角色和功能:能力与角色表

票数 3
EN

Stack Overflow用户

发布于 2018-09-25 07:28:48

只需更新wp/include/ ajax-action.php文件,而不是“edit_post”,它应该是“edit_posts”。

代码语言:javascript
复制
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();
}
}
票数 2
EN

Stack Overflow用户

发布于 2015-08-07 20:02:36

有多种解决方案,取决于根本原因.

如果您的角色损坏了,一种解决方案似乎可以工作,那就是安装一个编辑WordPress角色的插件。我不知道你到底需要什么角色,但我认为这是其中之一。我刚刚注意到你检查了这些,所以你可能会超越这些,你是否使用了一个角色编辑插件?

我猜用户需要edit_post,因为上传图片和附加到帖子是编辑文章。

代码语言:javascript
复制
unfiltered_upload 
upload_files 

另一种解决方案是在允许或有访问权限的情况下添加一些PHP代码。将其添加到PHP文件中,例如,header.php (临时)并运行它。

代码语言:javascript
复制
$user_role = 'author'; // Change user role here
$contributor = get_role($user_role);
$contributor->add_cap('upload_files');

这将赋予作者上传文件的能力。

第三种解决方案有时解决这个问题的方法是尝试为设置->媒体中的上传目录添加完整的文件路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31885086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档