我创建了一个自定义帖子类型和自定义分类法,为简单起见,将其称为cpt-category。我为此cpt提供了3种cpt类别。
现在,我在仪表板上有一些自定义用户角色-但我不需要,我可以使用“用户角色编辑器”为订户角色创建自定义功能。
但是我需要确保订户只能在三个以下的一个特定的 cpt类别中创建新的cpt。这样,如果订户创建新的cpt,则会自动设置cpt类别。
另一方面,管理员应该能够从所有三个cpt类别中进行选择。
有wp功能吗?
预先感谢您:)
答案 0 :(得分:1)
默认情况下,订阅者角色无法编辑或创建帖子。就是说,没有办法限制具有edit_posts
功能的人可以访问的类别。
解决此问题的最简单方法是在前端创建一个表单,该表单使用admin-post.php
钩子发送回admin_post
(对于已登录的用户),然后执行该钩子函数内的逻辑。
一些基本的东西可能看起来像这样:
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
,使用发送到$_POST
的{{1}}参数来创建新帖子。在该挂钩中,您还可以完全访问$ _POST。
使用AJAX将阻止您的订阅者直接发送到“ admin-post.php”页面,因此,我建议使用AJAX提交表单。
使用admin_post
,您可以编程要使用的确切类别ID。但是,如果该类别ID发生了更改,则除非您使用wp_insert_post
通过Slug(建议)检索它,否则您还必须在代码中对其进行更新。
您可以了解有关get_term
in the WordPress Codex的更多信息,并且有一个使用SitePoint上的wp_insert_post
钩子的表单教程。