我有一个自定义帖子类型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";}
答案 0 :(得分:2)
您应该使用与WP_Query
类似的WP_User_Query
。更具体地说,在您的情况下,请查看Custom Field Parameters并将其发送给该机构的ID
。