这是可以做到的,但在我解释我的方法之前,请事先警告我,这不是为胆小的人准备的。我不会在这里给出解决方案的代码,但我会说明如何从理论上实现这一点。
Associating Taxonomy Term with User
您需要解决的第一个问题是找到一种将分类术语与用户关联的方法。默认情况下,WordPress不会这样做。WordPress记录与所有类型的帖子相关联的作者信息,但不会记录分类术语的类似数据。因此,首先,您需要开发一种向术语中添加元数据的方法。我最近写了一篇
article 关于向分类术语添加元数据。您需要做的是将用户id作为元数据添加到术语中
whenever the term is saved. 这意味着捕获元数据并将其保存在分类术语创建和编辑屏幕中,以及用户可以创建新术语的主写后屏幕中。这需要两个最重要的挂钩:
这些挂钩被称为wp_update_term
函数,这将是添加术语元以将当前作者的id与术语相关联的绝佳位置。完成这项工作后,您就可以将您的术语与您的作者关联起来。
Filtering Terms By Author
既然作者已与术语关联,则需要在显示这些术语时对其进行筛选。换句话说,您需要确定这些术语何时显示在管理员中,并对其进行筛选,以便只显示作者的术语。我认为进行过滤的两个最重要的区域是分类法屏幕和帖子屏幕(可能还有其他地方可以过滤这些术语,但这是目前唯一想到的两个)。您的方法可能会有所不同,但首先,您将寻找可以使用的方法
add_filter
影响这些场景中显示的术语。对于写入屏幕术语显示,您可以使用:
获取术语以帮助完成任务。这些工具相对容易使用。基本上,策略是编写一个函数,循环遍历每个术语,标识与之相关联的作者,如果与作者无关,则将其删除。我写了一篇关于使用get_terms
到sort taxonomy terms by a custom order. 如果你看一看这篇文章,你就会知道如何利用get_terms
滤器
这个get_terms
过滤器在过滤分类页面上的术语时也很有用。但是,您必须小心,不要滥用过滤器。例如,只有当用户当前已登录、用户是作者且用户在管理员中时,才应应用筛选器。因此,您不会影响查看站点的用户的输出。对此要非常小心。
希望这将为您指明正确的方向。这实际上是一个很酷的想法,如果我有时间,我可能会围绕它开发一个插件。