获取与WordPress中的自定义帖子类型相关联的所有用户

时间:2017-10-28 18:28:35

标签: php mysql wordpress

我有一个自定义帖子类型institutions,它们是关联用户。

每当我添加新用户时,我都可以通过Advanced Custom Fields插件选择与他/她相关联的机构。

现在设置已完成,我正在尝试显示与我当前正在查看的机构相关联的所有用户的列表(single-institutions.php

我无法使用WP_Query(),因为它不允许我获取用户而我无法使用wp_list_authors(),因为它不允许使用meta_query

所以我没有使用旧式的mysql查询。

但我不确定如何继续,因为我需要查询多个表以获得正确的结果。

wp_users: ID
wp_usermeta
    user_id
    meta_key: institution
    meta_value: a:1:{i:0;s:4:"2875";} // "2875" is the ID of the institution the user is associated with

如何使用直接mysql查询实现此目的?

编辑:我改为WP_User_Query(),我不知道它存在。但是,我不确定在meta_value

中放入什么
$args = array(
  'role'           => 'Author',
  'order'          => 'ASC',
  'orderby'        => 'display_name',
  'who'            => 'authors',
  'exclude'        => [1, 7],
  'count_total'    => true,
  'meta_key'       => 'institution',
  'meta_value'     => $post->ID
);

// The User Query
$user_query = new WP_User_Query( $args );

// The User Loop
if ( ! empty( $user_query->results ) ) {
  foreach ( $user_query->results as $user ) {
    echo $user->display_name . '<br>';
  }
} else {
  // no users found
}

现在,没有任何内容显示出来。如果我从查询中删除“meta_value”,则与所有机构关联的所有用户都会显示在所有页面上。

如何缩小范围以匹配我目前正在查看的机构ID($post->ID)?

这是meta_value表中wp_usermeta列的值。它是序列化的。我是否需要做一些特殊的事情才能在最后检索ID?

a:1:{i:0;s:4:"2875";}

1 个答案:

答案 0 :(得分:2)

您应该使用与WP_Query类似的WP_User_Query。更具体地说,在您的情况下,请查看Custom Field Parameters并将其发送给该机构的ID