自WordPress 2.9起引入了自定义分类功能。 它允许您为帖子,页面以及自定义帖子类型创建自定义组。
假设您正在建立一个图书目录网站,并且已经创建了一个自定义帖子类型来发布图书 。 通过使用自定义分类法,您可以为其创建一个自定义分类法,称为Genre 。 在此流派分类法中,您可以创建许多项目(在技术上称为术语 ),例如小说,儿童或传记,以对书籍进行分组。
不幸的是,目前, 我们无法向用户注册自定义分类法 ; 至少不像我们在其他帖子类型中注册时那样简单明了。 我们可以从这个想法中预见到一个完美的应用程序,那就是我们可以使用它来分配其他用户属性 ,例如他们的职业 , 专业或组织职位 ,而不是注册一组新的用户角色 。 这也提供了根据分配的分类术语查询用户的可能性。
如果这个想法可以使您的网站受益,请查看此技巧。
入门
首先,我们将安装名为User Taxonomies的插件以简化我们的工作。
插件激活后。 转到GenerateWP 生成分类代码 。 将代码输出放在主题的functions.php文件中。 下面的代码片段是一个示例。 但是,已将其删除以使本文看起来更短。 您可以点击此链接查看完整的代码 。
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参数:
register_taxonomy( 'staff_position', 'post', $args );
…从post
到user
,例如:
register_taxonomy( 'staff_position', 'user', $args );
现在,转到WP-Admin,您应该在“用户”菜单下找到一个新菜单,如下所示。
分配自定义分类法
导航到新菜单并创建一些术语 。 在此示例中,我们创建了两个项目: CEO和Managers 。
然后转到用户编辑屏幕,并将分类中的一项分配给用户。
查询用户
我们将基于给定的术语(分类法)在主题中显示用户。 但是在继续之前,让我们创建一个新的页面模板。 我们将在此新模板的以下部分中添加代码。
在这种情况下,我们将无法使用get_users
或WP_User_Query
查询用户; 当您创建新的WP_User_Query
类时,它不会输出分配给用户的自定义分类法。 Justin Tadlock 在他的教程中向我们展示了如何使用get_objects_in_term
函数。
此函数输出与该术语相关联的对象ID(在我们的情况下, 该对象是用户 )。 要使用它,我们需要两个参数:术语ID和分类名称。 如下所示,您可以在浏览器URL栏上找到术语ID,如下所示。
找到ID后,将其放入函数中,就像这样。
$users = get_objects_in_term(3, 'user_position');
您可以使用var_dump()
来显示已检索到的对象ID。 就我而言,它返回ID为1
和3
。
使用这些ID,我们还可以检索例如用户名和头像。
<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>
…最后是结果。
而已。 您可以随意修改以上代码以满足您的要求。
翻译自: https://www.hongkiat.com/blog/wordpress-custom-taxonomy-for-users/