好吧,所以我有一个名为 Blurbs 的自定义帖子类型(翻译,有点)。 我想为 Blurbs 中的帖子添加一组静态类别(我不希望用户能够创建自定义类别)。 我想要两种不同类型的类别; 链接和页面摘录。 我做了一些阅读并得出结论,分类法是将这些“类别”添加到帖子类型的方法。
我已经创建了分类法,但我不希望它在菜单中可见。 我只想要编辑/发布屏幕上的“类别”框,其中包含两个静态项目。
这是我到目前为止所拥有的:
$labels = array(
'name' => 'Categories',
'singular_name' => 'Category',
'search_items' => 'Search categories',
'all_items' => 'All categories',
'edit_item' => 'Change category',
'update_item' => 'Update category',
'add_new_item' => 'Create new category',
'new_item_name' => 'New category name'
);
register_taxonomy('categories', array('blurb'), array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
));
通过设置 show_ui
到 false
,它从两个地方(菜单和链接框)消失。
所以,我需要帮助的两个问题是:
- 我如何从菜单中删除它?
- 我如何给它“静态”选项(又名类别)以供选择?
-
做了
show_ui => false
然后在帖子编辑屏幕上显示它手动添加框
add_action('add_meta_boxes', 'meta_boxes_function'); function meta_boxes_function() { add_meta_box('categoriesdiv', 'categories', 'post_categories_meta_box', 'blurb', 'side', null, array('taxonomy' => 'categories')); }
-
对每个静态术语使用此代码
if(!term_exists('term1', 'categories')) wp_insert_term('term1', 'categories');
有一种比隐藏用户界面(show_ui=false
) 并添加自定义元数据框以仅显示术语:删除用户管理术语的能力。
如果您取消用户管理条款的能力,您不仅拥有一个安全的解决方案,而且用户界面会自行处理。 作为的一部分 register_taxonomy()
您可以指定用户必须具备的管理/编辑/删除和分配条款的能力。
register_taxonomy(
'categories',
array( 'blurb' ),
array(
...
'show_ui' => true,
'capabilities' => array(
'manage_terms' => 'a_capability_the_user_doesnt_have',
'edit_terms' => 'a_capability_the_user_doesnt_have',
'delete_terms' => 'a_capability_the_user_doesnt_have',
'assign_terms' => 'edit_posts'
),
...
)
)
对于前三个,您需要将功能设置为用户不具备的功能。 事实上,如上保留它可能就可以了。 如果 你 仍然想管理/编辑/删除条款,您始终可以使用您拥有的功能,但您的客户可以(他们可以吗? manage_options
, 例如?)。 这将允许您创建和维护“静态”列表。 或者您可以在进行上述更改之前简单地执行此操作。
最后你会想要给一个能力 assign_terms
用户 做 有。 默认情况下,它是 edit_posts
,因此您可能可以保留它。 但是,您可能想要创建一个新功能 edit_blurb
,这样您就可以允许您的用户编辑简介,但不能编辑帖子。
WordPress,然后处理其余部分。 由于用户无法管理/编辑/删除条款,因此管理菜单消失了。 此外,编辑简介页面上的 metabox 仅显示现有术语,用户无法添加/删除或编辑任何术语。
*请记住,隐藏 UI 不会删除用户的 能力 编辑和删除条款,它只是隐藏它。