如何锁定特定帖子(CPT),使其不被管理员以外的任何人编辑

时间:2015-05-14 作者:TJ Sherrill

要百分之百清楚,这与网站的前端无关。

我想阻止除管理员以外的所有用户编辑一些特定的帖子。这些帖子是编辑/管理员可以创建和修改的CPT,但其中3篇需要锁定,以便只有管理员可以对其进行CRUD。

有什么想法吗?

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

使用map_meta_cap 筛选以有条件地阻止无法manage_options (即管理员)编辑/删除某些帖子:

function wpse_188368_map_meta_cap( $caps, $cap, $user_ID, $args ) {
    if ( in_array( $cap, array( \'delete_post\', \'edit_post\' ) ) && $args && ! current_user_can( \'manage_options\' ) /** Only proceed for non-administrators */ ) {
        $post_id = $args[0];
        if ( in_array( $post_id, array( 1, 2, 3 /* ID\'s of locked posts */ ) ) )
            $caps[] = \'not_allowed\'; // Add a required capability they won\'t have - current_user_can() will then subsequently return false
    }

    return $caps;
}

add_filter( \'map_meta_cap\', \'wpse_188368_map_meta_cap\', 10, 4 );

结束

相关推荐