我创建了一个名为Event
并且我在我的functions.php
文件,但我的自定义用户角色仍然无法看到事件编辑页面上的特色图像元框。如果用户以管理员身份登录Featured Image
元框显示无任何错误。
以下是我注册CPT的代码:
add_action(\'init\', \'event_post_init\');
function event_post_init() {
// array of all capabilities for our CPT
$capabilities = array(
\'publish_posts\' => \'publish_events\',
\'edit_posts\' => \'edit_events\',
\'edit_others_posts\' => \'edit_others_events\',
\'delete_posts\' => \'delete_events\',
\'delete_published_posts\' => \'delete_published_events\',
\'delete_others_posts\' => \'delete_others_events\',
\'read_private_posts\' => \'read_private_events\',
\'edit_post\' => \'edit_event\',
\'delete_post\' => \'delete_event\',
\'read_post\' => \'read_event\',
);
// register the CPT
register_post_type( \'event\',
array(
\'labels\' => array(
\'name\' => __(\'Event\')
),
\'public\' => true,
\'has_archive\' => true,
\'show_ui\' => true,
\'menu_position\' => 8,
\'capability_type\' => array(\'event\', \'events\'),
\'capabilities\' => $capabilities,
\'supports\' => array(\'title\', \'thumbnail\', \'page-attributes\'),
\'map_meta_cap\' => true,
\'hierarchical\' => true,
)
);
}
下面是我如何设置自定义用户角色:function create_event_admin_role(){
add_role(\'event_admin\', \'Event Administrator\', array(
\'publish_events\' => false,
\'edit_events\' => true,
\'edit_others_events\' => false,
\'delete_events\' => false,
\'delete_others_events\' => false,
\'read_private_events\' => true,
\'edit_published_events\' => true,
\'read\' => true,
\'assign_terms\' => true,
\'edit_terms\' => true,
\'manage_terms\' => true,
\'read_private_pages\' => true
)
);
}
奇怪的是,如果我查看编辑页面的标记,我可以看到#postimagediv
元素,但由于某些原因它被隐藏。以下是页面中的标记:<div class="postbox hide-if-js" id="postimagediv" style="">
<div title="Click to toggle" class="handlediv"><br></div>
<h3 class="hndle ui-sortable-handle"><span>Featured Image</span></h3>
<div class="inside">
<p class="hide-if-no-js">
<a class="thickbox" id="set-post-thumbnail" href="http://example.com/wp-admin/media-upload.php?post_id=662&type=image&TB_iframe=1&width=753&height=294" title="Set featured image">Set featured image</a>
</p>
</div>
</div>
而实际上隐藏元框的css:#postimagediv {
display: hidden !important;
}
请注意,我have 已启用Featured Image
在下面Screen Options
.也许我还应该指出,我已经尝试过赋予上述角色upload_files
使用以下代码的权限:
function extend_event_admin_role() {
$role = get_role(\'event_admin\');
$role->add_cap(\'upload_files\');
}
另一件需要指出的是,如果我do 添加upload_files
许可,那么Featured Image
在下可见Screen Options
还有其他支持媒体的元框Add Media
按钮,如果我设置upload_files
到false
消失。如果我在中更改代码wp-admin/edit-form-advanced.php
它添加了特色图像元盒,然后我可以看出它真的在呼叫add_metabox()
:if ( $thumbnail_support && current_user_can( \'upload_files\' ) ):
add_meta_box(\'postimagediv\', __(\'Featured Image\'), \'post_thumbnail_meta_box\', null, \'side\', \'low\');
print \'Support for Featured Image\';
exit;
endif;