show_admin_column
参数设置为true
并更改rewrite
子弹,以使其不仅仅是分类标准子弹。在这种情况下,它是带有“人物类别”自定义分类法的“人物”帖子类型。我很惊讶以前没有问过这个,所以这是一个问题和答案。
#1 楼
register_taxonomy()
是这项工作的工具。在法典中:该功能添加或覆盖了分类法。
一种选择是复制
register_taxonomy()
和$args
并对其进行修改。但是,这意味着将来对原始register_taxonomy()
代码的更改都会被覆盖。因此,至少在这种情况下,最好获取原始参数,修改我想要更改的参数,然后重新注册分类法。此解决方案的灵感来自@Otto,它回答了有关自定义帖子类型的类似问题。
使用示例中的
people
自定义帖子类型和people_category
分类法,将做到这一点:function wpse_modify_taxonomy() {
// get the arguments of the already-registered taxonomy
$people_category_args = get_taxonomy( 'people_category' ); // returns an object
// make changes to the args
// in this example there are three changes
// again, note that it's an object
$people_category_args->show_admin_column = true;
$people_category_args->rewrite['slug'] = 'people';
$people_category_args->rewrite['with_front'] = false;
// re-register the taxonomy
register_taxonomy( 'people_category', 'people', (array) $people_category_args );
}
// hook it up to 11 so that it overrides the original register_taxonomy function
add_action( 'init', 'wpse_modify_taxonomy', 11 );
请注意,我将第三个
register_taxonomy()
参数转换为期望的数组类型。由于register_taxonomy()
使用可以处理wp_parse_args()
或object
的array
,因此这不是严格必需的。就是说,根据法典,应将register_taxonomy()
的$args
作为array
提交,因此这对我来说是正确的。评论
我正在尝试执行此操作,以将统一分类法更改为分层分类法。我只是将阶层属性更改为true。这样,它会在帖子编辑屏幕的右侧导致两个用于分类法的元框,而我实际上无法添加分类法...
–乔尔·沃舍姆(Joel Worsham)
2015年4月8日在16:48
确保使用与原始分类法相同的标记(例如'people_category'),以便将其覆盖。
–mrwweb
2015年4月8日在17:21
天才!天才!工作完美!
–戴维·杰克(DaveyJake)
2015年5月31日上午10:02
我发现此解决方案存在一个问题:capabilities参数在内部以cap的形式存储,因此不会传递给新的注册分类法。在这里查看我对类似问题的回答
–法比恩·夸特拉沃(Fabien Quatravaux)
2015年12月14日上午8:37
太好了,我用它向自定义分类法中添加了层次化网址。
–布莱恩·佩特(Brian Peat)
18/12/2在23:36
评论
对于任何陷入困境的人来说,这只是一个旁注,请记住在检查结果之前冲洗永久链接。