WP_User_Query()
を使用してユーザーにクエリを作成しようとしていますshop_manager
ロールとshop-category
というカスタム分類法および現在の分類法の用語IDでユーザーをフィルタ処理する必要があります。
私がこれまでに持っているコード:
<?php
// WP_User_Query arguments
$args = array (
'role' => 'shop_manager',
'order' => 'DESC',
'orderby' => 'user_registered',
'tax_query' => array(
array('taxonomy' =>
'shop-category',
'field' => 'id',
'terms' => $term_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 '<li><span>' . esc_html( $user->shop_name ) . '</span></li>';
}
} else {
// no users found
}
?>
タームIDを取得するには、このコードを使用していました
<?php $queried_object = get_queried_object();
$term_id = $queried_object->term_id;
echo 'ID = '. $term_id;?>
これで、shop_manager
ロールを持つすべてのユーザーが表示されました。分類法がうまくいかないようです。
どうやら'tax_query'
にWP_User_Query
のコア実装はまだありません。
詳細はこちらのチケットをチェックしてください - > https://core.trac.wordpress.org/ticket/31383
それにもかかわらず、get_objects_in_term
を使用する代替方法があります
$taxonomy = 'shop-category';
$users = get_objects_in_term( $term_id, $taxonomy );
if(!empty($users)){
// WP_User_Query arguments
$args = array (
'role' => 'shop_manager',
'order' => 'DESC',
'orderby' => 'user_registered',
'include' => $users
);
// 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 '<li><span>' . esc_html( $user->shop_name ) . '</span></li>';
}
}
else {
// no shop_manager found
}
}
else {
// no users found
}
tax_query
クラスにはWP_User_Query
パラメーターはありません。質問にuser-meta
というタグを付けたので、特定のshop-category
用語のID
(または用語名自体さえも)をユーザーメタエントリとして格納することしかできません。
この場合、次のようなものが必要になります。
// The 'WP_User_Query' arguments array
$args = array(
'role' => 'shop_manager',
'order' => 'DESC',
'orderby' => 'user_registered',
'meta_key' => 'shop_name', // Is this the meta key you are using?
'meta_value' => 'the_term_name_or_term_id', // Based on however you store your meta data
'meta_compare' => '=',
);