#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') );