【问题标题】:In Wordpress dashboard, how can I make specific user role post only in specific post category?在 Wordpress 仪表板中,如何仅在特定帖子类别中发布特定用户角色帖子?
【发布时间】:2019-03-26 05:12:24
【问题描述】:

我为它创建了一个自定义帖子类型和自定义分类,为简单起见,我们将其称为 cpt-category。这个cpt我有3个cpt-categories。

现在,我在仪表板中有一些自定义用户角色 - 但我不需要,我可以使用用户角色编辑器为订阅者角色创建自定义功能。

但我需要确保订阅者只能在三个中的一个特定 cpt 类别中创建新的 cpt。这样如果订阅者创建一个新的cpt,cpt-category就会自动设置。

另一方面,管理员应该能够从所有三个 cpt 类别中进行选择。

这个有 wp 功能吗?

提前谢谢你:)

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    默认情况下,订阅者角色不能编辑或创建帖子。也就是说,没有办法限制具有edit_posts 功能的人可以访问的类别。

    解决此问题的最简单方法是在您的前端创建一个表单,使用admin_post 钩子(用于登录用户)发送回admin-post.php,然后在函数中执行您的逻辑为了那个钩子。

    一些非常基本的东西可能看起来像这样:

    function create_cpt_post_subscriber() {
        if (!current_user_can('edit_post')) {
            return false;
        }
    
        /* do stuff */
    }
    add_action('admin_post_action_name', 'create_cpt_post_subscriber');
    

    然后,您将在该函数中使用wp_insert_post,使用发送到admin_post$_POST 参数创建新帖子。在该挂钩中,您还可以完全访问 $_POST。

    使用 AJAX 会阻止您的订阅者直接发送到“admin-post.php”页面,所以我建议使用 AJAX 提交表单。

    使用wp_insert_post,您可以在您希望他们使用的确切类别ID 中进行编程。但是,如果该类别 ID 发生更改,您也必须在代码中对其进行更新,除非您使用 get_term 通过 slug 检索它(建议)。

    您可以了解有关wp_insert_postin the WordPress Codex 的更多信息,还有一个使用admin_post 钩子在SitePoint 上的表单教程。

    【讨论】:

    • 好的,非常感谢您的帮助。我真的不必使用订阅者,我也可以使用编辑器。我试试看。
    • 无论哪种方式,您都需要有一个前端来强制分类,WordPress 无法通过用户角色限制类别,任何具有 edit_posts 功能的用户角色都可以访问所有类别。
    • 知道了。我将为这些用户制作一个前端仪表板之类的东西,创建一些 acf 表单和强制类别。没问题。谢谢你:)
    猜你喜欢
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    相关资源
    最近更新 更多