get_users не выполняет поиск всех пользователей на users.php

#php #wordpress #hook

Вопрос:

Я добавил пользовательский фильтр на users.php. Это раскрывающийся список определенной роли пользователя. Когда они выбирают один из них, он выполняет запрос. Я использовал приведенный ниже код для отображения фильтра. Когда я использую фильтр, результаты отображаются правильно, но в раскрывающемся списке «Фильтр» больше не отображаются все пользователи. Таким образом, get_users больше не выполняет поиск во всем списке пользователей, а в отображаемом списке. Как я могу управлять поиском во всех пользователях.

 /*** Sort and Filter Users ***/
add_action('restrict_manage_users', 'filter_installers_by_agent');
function filter_installers_by_agent($which)
{
    $agent_id = "";
    if(isset($_REQUEST['filter-agent_top']))    if($_REQUEST['filter-agent_top'] != "")     $agent_id = $_REQUEST['filter-agent_top'];
    if(isset($_REQUEST['filter-agent_bottom'])) if($_REQUEST['filter-agent_bottom'] != "")  $agent_id = $_REQUEST['filter-agent_bottom'];

    $args = array(
        'role__in'    => array('um_vertegenwoordiger'),
        'orderby' => 'user_nicename',
        'order'   => 'ASC',
    );
    $users = get_users( $args );
    
    // template for filtering
     $st = '<select name="filter-agent_%s" style="float:none;margin-left:10px;">
        <option value="">%s</option>%s</select>';

    $options = "";
     // generate options
     foreach($users as $user) {
         $selected = "";
         if($agent_id == $user->ID) $selected = "selected";
         $options .= "<option value=".$user->ID." $selected>Installateurs onder ".$user->display_name."</option>";
     }

     // combine template and options
     $select = sprintf( $st, $which, __( 'Alle installateurs' ), $options );

    // output <select> and submit button
    echo $select;
    submit_button(__( 'Filter' ), null, $which, false);
}
 

Комментарии:

1. Я сам решил эту проблему, создав глобальный var вне области в functions.php: $global_agents = get_users( array('role__in' => array('um_vertegenwoordiger'), 'orderby' => 'user_nicename', 'order' => 'ASC') );