我有一个页面模板,用户可以在其中上传图像。我使用这段代码打开媒体模式(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,
这样,具有“客户”角色的用户可以在管理区域上载新文件。当他们打开页面模板时,会出现媒体模式,他们可以选择已上载的图像,但如果客户尝试从页面模板上载新图像,他们会收到以下消息:
抱歉,不允许您将文件附加到此帖子。
如有任何帮助或建议,将不胜感激。
谢谢
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