WordPress 禁止用户新建某文章类型的文章

文 / @WordPress主题

WordPress文章类型的管理

作为一名小本本,深知WordPress的文章类型管理可以将不同的内容区分为不同的内容对象,从而方便后台管理。同时,用户在前端提交的内容也可以写入到相应的文章类型中,然后由后台进行维护管理。有时候,我们需要禁止管理员在后台新建内容,以确保这些内容都是由用户在前端提交的。接下来,我们将介绍两种实现方式。

创建文章类型的时候,直接禁用

在使用register_post_type新建文章类型时,可以直接设置文章类型的create_posts参数为‘do_not_allow’,从而实现对新建内容的禁用。

register_post_type('custom_post_type_name', array(
    'capability_type' => 'post',
    'capabilities' => array(
        'create_posts' => 'do_not_allow', //移除"新建"功能
    ),
    'map_meta_cap' => true, // 如果不允许用户修改/删除文章,设置为`false`
));

如果需要开启某个角色的用户创建文章的权限,则可以将create_posts的值设为对应角色的名称,如‘administrator’。

创建文章类型后禁用

有时候,我们的目标文章类型是通过插件事先创建好的,此时去修改主题或插件中的相关代码是不可取的,因为插件一旦更新,我们所做的修改就会被覆盖。在这种情况下,我们可以通过WordPress的Action来修改目标文章类型的权限,在初始化时将“文章”文章类型的新建文章权限设置为“do_not_allow”,同样可以去掉创建文章类型的权限。

add_action('init', function() {
    global $wp_post_types;
    $wp_post_types['post']->cap->create_posts = 'do_not_allow';
});

除此之外,我们还可以通过隐藏新建文章的后台菜单来实现禁止用户新建文章的功能。然而,这种方法并不安全,因为如果用户了解到新建文章的URL地址,就可以直接在浏览器中输入该地址打开新建文章的页面。因此,我们不建议使用这种方法。最保险的办法是采用本文中介绍的两种方法的任意一种。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。