删除帖子所需的功能是delete_posts
. 如果您希望他们能够删除自己发布的帖子,那么该功能是delete_published_posts
.
查看管理面板所需的功能是read
. 订阅者本机具有此功能,因此除非您将其删除,否则订阅者可以访问后端。
我将编写一个简单的插件,在激活时为订阅者角色添加所需的功能,在停用时删除这些上限。
然后在主题中,您可以检查:
if( current_user_can( \'delete_posts\' ) ) {
//* Show delete link
}
因为订阅服务器角色无法
delete_others_posts
, 该链接将不会显示在他们没有创作的帖子上,并且他们将无法删除他们没有发布的帖子。
/**
* Plugin Name: WordPress StackExchange Question 268755
* Description: Allow subscribers to delete their own posts
**/
//* On activation, add the capabilities to the subscriber role
register_activation_hook( __FILE__, \'wpse_268755_activation\' );
function wpse_268755_activation() {
$subscriber = get_role( \'subscriber\' );
$subscriber->add_cap( \'delete_posts\' );
$subscriber->add_cap( \'delete_published_posts\' );
}
//* On deactivation, remove the capabilities from the subscriber role
register_deactivation_hook( __FILE__, \'wpse_268755_deactivation\' );
function wpse_268755_deactivation() {
$subscriber = get_role( \'subscriber\' );
$subscriber->remove_cap( \'delete_posts\' );
$subscriber->remove_cap( \'delete_published_posts\' );
}
如果不给用户和/或角色删除帖子的能力,那么即使您向他们显示删除链接,他们也无法删除帖子。同样,如果用户或角色有能力删除帖子,即使你没有显示删除链接,也可以删除帖子,这对他们来说只是更加困难。