这个问题包括三个部分:获取当前用户数据、将其链接到类别以及检索和显示帖子。您可以在自定义页面模板中包含这些代码段,并将其分配给“我的家庭作业”页面。
在这三个子答案下面,我分享了一些关于如何使这更方便用户/用户可管理的其他建议。
获取用户数据使用wp_get_current_user
. 这将产生WordPress User object, 您可以使用从中检索角色$current_user->roles
(假设您已设置$current_user = wp_get_current_user();
). 这将生成一个数组。我假设用户只有一个角色,因此该数组中的第一个元素就是我们要检查的元素。
将用户链接到类别可以使用if-elseif
-声明如下。
$roles = $current_user->roles;
if ($roles[0] == \'role\'){
$category_name = \'category-name\';
}elseif ($roles[0] == \'other-role\'){
$category_name = \'other-category-name\';
}
您可以通过添加其他
elseif
-条款。代替
role
(和
other-role
) 由角色的鼻涕虫,以及
category-name
和
other-category-name
按类别划分。
使用检索和显示帖子$category_name
在a的参数中WP_Query
将查询检索的结果限制为类别。
$qrt_args = array(
\'category_name\' => $category_name
);
$posts = new WP_Query( $qry_args );
您现在可以使用
$posts
以常规方式
loop 并显示结果。
其他想法
虽然上面的代码应该可以运行(尚未测试),但它需要您编辑代码以进行调整。这可能不太方便,例如,如果您在某个时间点无法进行这些更改。
另一种选择是为每个学生创建帖子,然后将相关类别(或多个类别)分配给该帖子,并将作者设置为学生。这样,您可以在Wordpress仪表板中匹配学生和类别。此外,这还提供了更多的灵活性和稳健性,例如,将多个类别分配给同一个学生。(上面发布的代码假设只有一个类别。)当然,这也会显示你用来在有家庭作业问题的页面上设置匹配的帖子,但你可以利用它为你带来好处(“嘿,约翰,请在下面找到你的家庭作业问题”)。然而,也可以使用额外的类别或标记来防止这种情况发生。
另一个更好但更难实现的选项是创建一个新的usermeta字段,在其中保存用户应该能够看到的帖子类别。
请注意,这(尚未)为您的这部分问题提供解决方案:
我还想限制每个作者只使用我分配给他们的类别,而不是从所有可用类别中进行选择。