通过在类别页面上匹配自定义元数据列出所有作者

时间:2011-09-06 作者:Marius Ooms

我有一些类别术语作为我们部门的占位符。然后,我使用Justin Tadlock的教程在后端概要文件编辑屏幕上输入这些术语:

http://justintadlock.com/archives/2009/09/10/adding-and-using-custom-user-profile-fields

以下代码由sanchothefat

现在,我可以在“用户作者”页面上列出用户选择的所有术语,但这里是我真正的问题和令人震惊的地方:

How can I visit the term page, which acts like a home page for the department, and list all authors that have that term selected in their profile?

提前感谢您的建议。

1 个回复
最合适的回答,由SO网友:onetrickpony 整理而成

尝试WP_User_Query, 类似于:

 $term = get_queried_object();

 $users = new WP_User_Query(array(
   \'meta_key\'   => \'your_meta_key\',        // the key in which you store your terms
   \'meta_value\' => (int)$term->term_id,    // assuming you store term IDs
 ));

 print_r($users->get_results()); 
根据您的输入进行更新:

$term = get_queried_object();

$user_query = new WP_User_Query(array(
  \'role\'         => \'subscriber\',         // or whatever your target role is
  \'meta_key\'     => \'involvement\', 
  \'meta_compare\' => \'like\', 
  \'meta_value\'   => $term->name,          // or "%{$term->name}%" ?
  \'fields\'       => array(\'user_email\'),  // if you only need the email
 )); 

$users = $user_query->get_results();

foreach($users as $user)
  echo get_avatar($user->user_email);
请注意,“like”查询可能会失败,如果您有两个名称相似的术语,如“abc def”和“abc”,则返回错误的用户-在第二种情况下,您也会得到具有“abc def”术语的用户。

唯一可靠的方法是让所有用户都拥有元数据(删除元参数并将“fields”更改为“all\\u with\\u meta”),然后检查meta是否与确切的术语匹配,但此查询非常昂贵。。。

结束

相关推荐

post categories

我有一些帖子,我想把它们分为三类:新闻、事件和新闻稿,然后我有三个页面使用相同的模板。我想在相关页面上显示这些帖子,以便在新闻页面上发布新闻帖子。有人能告诉我什么是最好的方式吗。我想这很简单,但我对Wordpress还是相当陌生的。非常感谢,