Read-Only custom post type

时间:2018-10-12 作者:Sam

对于我自己主题的联系人表单,我创建了一个自定义的帖子类型,其中自动存储用户的消息。在管理区域中,可以阅读类似于注释的消息。

通过执行此操作,您可以在管理区域中创建、更改和删除邮件。应防止所有这些功能,以便只可能读取消息。

我试图通过为自定义帖子类型提供自己的功能并仅为所有用户角色分配阅读权限来实现这一点。不幸的是,这样做,将不再显示自定义帖子类型。事实证明,这可能是因为读取权限是针对前端的。那么,如何才能将对自定义帖子类型的访问限制为只读?

以下是我的CPT参数:

$args = array(
    \'labels\'             => $labels,
    \'public\'             => false,
    \'publicly_queryable\' => false,
    \'show_ui\'            => true,
    \'show_in_menu\'       => true,
    \'show_in_admin_bar\'  => false,
    \'menu_icon\'          => \'dashicons-email-alt\',
    \'query_var\'          => true,
    \'rewrite\'            => array( \'slug\' => \'contact-form\' ),
    \'capability_type\'    => array( \'contactFormMessage\', \'contactFormMessages\' ),
    \'capabilities\'       => array(
        \'edit_post\'          => \'edit_contactFormMessage\',
        \'edit_posts\'         => \'edit_contactFormMessages\',
        \'edit_others_posts\'  => \'edit_other_contactFormMessages\',
        \'publish_posts\'      => \'publish_contactFormMessages\',
        \'read_post\'          => \'read_contactFormMessage\',
        \'read_private_posts\' => \'read_private_contactFormMessages\',
        \'delete_post\'        => \'delete_contactFormMessage\'
    ),
    \'map_meta_cap\'       => true,
    \'has_archive\'        => true,
    \'hierarchical\'       => false,
    \'menu_position\'      => null,
    \'supports\'           => array( \'title\', \'editor\', \'author\' )
);
使用下面的循环,我为所有用户角色授予了读取权限。

global $wp_roles;

foreach ( $wp_roles->roles as $key => $value )
{
    $currentRole = get_role( $key );

     $currentRole->add_cap( \'read_contactFormMessages\' );
     $currentRole->add_cap( \'read_private_contactFormMessages\' );
}
为了安全起见,我正在为这个问题寻找一个无插件的解决方案。然而,如果要实现这一点需要付出巨大的努力,那么使用插件仍然是一种选择。

2 个回复
SO网友:Tom J Nowell

您是对的read 该功能用于前端。The capability you\'re looking for does not exist.

此外,如果它确实存在(实际上不存在),则WP Admin用户界面不提供查看/阅读帖子的UI,只提供添加和编辑。

如果你想要,恐怕你必须采取以下步骤:

添加新功能,并将其添加到相关角色中删除这些角色对自定义帖子类型的标准WP访问权限从头开始实施UI,包括列表屏幕和用于查看项目的选项页

SO网友:Enrico

现在看到这个。。。我已经实现了一些类似于您希望在的帮助下实现的内容@webaware 答复时间https://wordpress.stackexchange.com/a/124992/165023 如果你需要进一步澄清他的密码,请告诉我。。。来帮忙吧

结束

相关推荐

About Wordpress capabilities

我知道WordPress是博客引擎的最佳选择,通过一些插件,如Advance Custom Field,WP可以成为一个很棒的CMS。但它仍然有利于出版商将内容推送给用户。现在我的处境相当严峻。我的朋友想使用WP作为一个引擎,用户可以贡献他们的帖子,其他人可以查看它。是否可以使用WP我可以创建自定义主题(&a);插件可以做到这一点,但当用户在插件上放置很多东西(页面和帖子)时,它对性能有好处吗?