使用户能够上载文件

时间:2019-09-16 作者:Bojan

我有一个页面模板,用户可以在其中上传图像。我使用这段代码打开媒体模式(js;只是代码的一部分):

image_frame = wp.media({
  title: \'Select Media\',
  multiple : \'add\',
  button: {
    text: \'Use this media\'
  },
});
我有以下自定义角色:

add_role( \'customer\',  __( \'Customer\' ),
        array(
          \'read\'         => true,
          \'edit_files\'   => true,
          \'upload_files\'   => true,
          \'read_post\'   => true,
          \'edit_post\'   => true,
          \'edit_others_post\'   => true,
        )
      );
自定义帖子类型还具有

\'upload_files\' => true,
这样,具有“客户”角色的用户可以在管理区域上载新文件。当他们打开页面模板时,会出现媒体模式,他们可以选择已上载的图像,但如果客户尝试从页面模板上载新图像,他们会收到以下消息:

抱歉,不允许您将文件附加到此帖子。

如有任何帮助或建议,将不胜感激。

谢谢

1 个回复
SO网友:Bojan

我添加了此代码,使每个人都可以添加文件

function allow_own_attachments( $user_caps, $req_caps, $args, $UserObj ) {
if ( empty($args[2]) ) {
   return $user_caps;  // nothing to check
}
$post = get_post( $args[2] );  // post_id was passed here

if (is_object($post)){  //check if $post is an object. If it is\'t checked the code throws this Notice: Trying to get property \'post_author\' of non-object 
    if ( $post->post_author == $UserObj->ID ) {  // this is my post
        foreach ( (array) $req_caps as $cap ) {
            if ( empty( $user_caps[ $cap ] ) )
                $user_caps[ $cap ] = true;
        }
    }
}
$user_caps[\'edit_post\'] = true; // tested by wp_ajax_upload_attachment()
return $user_caps;
}

add_filter( \'user_has_cap\', \'allow_own_attachments\', 10, 4 );
“…确定要授予权限的任何自定义筛选器都必须在数组中循环并将所有内容设置为true。”

我使用了另一个问题的代码。原始答案可在此处找到:
Add Media Upload Capabilities Needed for Custom Role for non-Posts

相关推荐

Changing Social Media

有人能告诉我如何更改我的社交媒体链接吗?我已经在谷歌上尝试了一切。我的wordpress是由不再能够帮助我的第三方建立的。我已经介绍了如何保持更新。在我的网站上,社交媒体的链接位于底部,但不是菜单、页脚或媒体链接。我找不到用于将它们放在那里的插件。