如何为 WordPress 用户注册自定义分类法
自 WordPress 2.9 以来引入了自定义分类法功能。它允许您为帖子、页面以及自定义帖子类型创建自定义组。
假设您正在构建一个图书目录网站,并且您已经创建了一个用于发布图书的自定义帖子类型。通过使用 Custom Taxonomy,您可以为其创建一个自定义分类法,称为Genre。在此 Genre 分类法中,您可以创建许多项目(技术上称为术语),例如 Fiction、Kids 或 Biography 以对书籍进行分组。
不幸的是,此时,我们无法向用户注册自定义分类法;至少不像我们在其他帖子类型中注册它那样直接。我们可以从这个想法中预见到的一个完美应用是我们可以用它来分配额外的用户属性,例如他们的职业、职业或组织职位,而不是注册一组新的用户角色。它还打开了根据分配的分类术语查询用户的可能性。
如果这个想法可能对您的网站有益,请查看此提示。
推荐阅读: 如何使用分页显示作者列表
入门
首先,我们将安装一个名为User Taxonomies的插件来简化我们的工作。
一旦插件被激活。转到 GenerateWP 以生成分类法代码。将代码输出放在主题的functions.php文件中。下面的代码片段是一个示例。不过,它已被删除以使这篇文章看起来更短。您可以点击此链接查看完整代码。
1个
2个
3个
4个
5个
6个
|
if ( ! function_exists( 'user_staff_position' ) ) { function user_staff_position() { register_taxonomy( 'staff_position' , 'post' , $args ); } add_action( 'init' , 'user_staff_position' , 0 ); } |
现在,更改以下行中的 Post Type 参数:
1个
|
register_taxonomy( 'staff_position' , 'post' , $args ); |
…从post
到user
,像这样:
1个
|
register_taxonomy( 'staff_position' , 'user' , $args ); |
现在,转到 WP-Admin,您应该会在用户菜单下找到一个新菜单,如下所示。
分配自定义分类
导航到新菜单并创建一些术语。对于这个例子,我们创建了两个项目:CEO和Managers。
然后转到用户编辑屏幕并将分类法中的一项分配给用户。
查询用户
我们将根据给定的(分类法的)术语在主题中显示用户。但在继续之前,让我们创建一个新的页面模板。我们将在这个新模板中的以下部分中添加代码。
在这种特殊情况下,我们将无法使用get_users
or查询用户WP_User_Query
;当您创建一个新WP_User_Query
类时,它不会输出分配给用户的自定义分类法。Justin Tadlock在他的教程中向我们展示了如何使用该get_objects_in_term
函数。
此函数输出与术语相关联的对象 ID(在我们的例子中,对象表示用户)。要使用它,我们需要两个参数:术语 ID 和分类法名称。编辑时,您可以在浏览器 URL 栏中找到术语 ID,如下所示。
找到 ID 后,将其放入函数中,就像这样。
1个
|
$users = get_objects_in_term(3, 'user_position' ); |
您可以使用var_dump()
来显示已检索到的对象 ID;1
在我的例子中,它返回 ID 为和的用户3
。
使用这些 ID,我们还可以检索,例如,用户名和头像。
1个
2个
3个
4个
5个
6个
7
8个
9
10
|
<ul> <?php if ( ! empty ( $users ) ) : ?> <?php foreach ( $users as $id ) : ?> <li class = "user-entry" > <figure><?php echo get_avatar( get_the_author_meta( 'email' , $id ), '40' ); ?></figure> <h5 class = "user-title" ><a href= "<?php echo esc_url( get_author_posts_url( $id ) ); ?>" ><?php the_author_meta( 'display_name' , $id ); ?></a></h5> </li> <?php endforeach ; ?> <?php endif ; ?> </ul> |
……最后,这是结果。
就是这样。您可以自由修改上述代码以满足您的要求。