web-dev-qa-db-ja.com

pre_user_query meta_query管理者ユーザーリスト

私はpre_user_query' to change the query to include somemeta_query`変数を使おうとしています。

私の目的は、現在ログインしているユーザーと共通のmeta_valueを共有しているユーザーのみをユーザーリストに表示することです。

function modify_user_list($query){
    $user = wp_get_current_user();

    if( ! current_user_can( 'edit_user' ) ) return $query;

    $user_id = $user->ID; 
    $user_branch_number = get_user_meta($user_id, 'user_branch_number', true);

    $query->query_vars['meta_key'] = 'user_branch_number';
    $query->query_vars['meta_value'] = $user_branch_number; 
    $query->query_vars['meta_compare'] = '=';

}
add_action('pre_user_query', 'modify_user_list');

クエリをprint_rした場合、query_varsは適切に更新されたことを示しますが、管理パネルのユーザーリストは影響を受けません - すべてのユーザーの古いリストです。

2
sirmdawg

WordPressのドキュメントによるとpre_user_queryを使っています

WP_User_Queryが解析された後、そしてクエリが実行される前に発生します。

引数がWordPressにとって意味を持つときは、pre_get_usersと同じようにpre_get_postsを使うべきです。

pre_get_users WP_User_Queryが解析される前に発生します

フックを

add_action('pre_get_users', 'modify_user_list');

4
Sumit