禁用特定自定义帖子类型用户角色的quickedit

时间:2017-12-15 作者:Olly

我似乎在某种程度上遗漏了一些基本的东西(“我会尽量保持简短,但如果需要的话,当然可以提供更多的代码)

我用以下参数注册了一个CPT

\'capability_type\' => array(CPT_SLUG, CPT_SLUG.\'s\'),
\'map_meta_cap\' => true,
 \'capabilities\' => array(
 \'edit_post\' => \'edit_\'.CPT_SLUG.\'\',
 \'edit_posts\' => \'edit_\'.CPT_SLUG.\'s\',
 \'edit_others_posts\' => \'edit_others_\'.CPT_SLUG.\'s\',
 \'publish_posts\' => \'publish_\'.CPT_SLUG.\'s\',
 \'read_post\' => \'read_\'.CPT_SLUG.\'\',
 \'read_private_posts\' => \'read_private_\'.CPT_SLUG.\'s\',
 \'delete_post\' => \'delete_\'.CPT_SLUG.\'\',
 \'delete_posts\' => \'delete_\'.CPT_SLUG.\'s\'
 )  
到目前为止还不错。为了使事情在某种程度上符合用户角色在正常wp帖子中的工作方式,我正在通过以下操作删除“作者”角色的功能

 $authorRole->remove_cap( \'edit_others_\'.CPT_SLUG.\'s\' );
因此,作者无法编辑其他角色的帖子。虽然这样做有效,但即使是其他角色创建的帖子,我仍然可以在CPT帖子列表中使用快速编辑链接。

虽然我无法使用其他角色创建的帖子的快速编辑保存任何内容(这当然是我的想法),但我不认为应该有快速编辑链接(例如,“普通”WP帖子在上述场景中也不会显示此链接)

我是否遗漏了可能需要添加的筛选器/操作?或者“作者”是否还有其他需要删除的功能?

已经环顾四周好长一段时间了,但除了似乎可行的方法之外,找不到任何答案。。。

非常感谢您的提示

1 个回复
最合适的回答,由SO网友:dan9vu 整理而成

你可以试试post_row_actions 挂钩:

/**
 * Hide quick edit
 *
 * @internal  Used as a callback.
 *
 * @see  https://developer.wordpress.org/reference/hooks/post_row_actions/
 */
function wpse288663_hide_quick_edit($actions, $post)
{
    // Replace `{$cap}` with your specific capability.
    if (CPT_SLUG === $post->post_type && current_user_can({$cap})) {
        unset($actions[\'inline hide-if-no-js\']);
    }

    return $actions;
}

// Hook up.
add_filter(\'post_row_actions\', \'wpse288663_hide_quick_edit\', 10, 2);

结束

相关推荐