You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress多站点Network Admin用户面板添加筛选选项技术求助

给WordPress多站点网络管理用户面板添加自定义筛选选项

步骤1:添加筛选下拉菜单到用户列表顶部

通过restrict_manage_users钩子,在网络用户管理页面的筛选栏插入自定义下拉选项:

add_action('restrict_manage_users', 'add_custom_network_user_filter');
function add_custom_network_user_filter() {
    // 仅在网络管理员的用户列表页面显示
    if ( ! is_network_admin() || get_current_screen()->id !== 'users-network' ) {
        return;
    }

    // 获取当前选中的筛选值,保留刷新后的状态
    $selected_filter = isset($_GET['custom_user_filter']) ? sanitize_text_field($_GET['custom_user_filter']) : '';
    ?>
    <select name="custom_user_filter" id="custom-user-filter" class="wp-filter-select">
        <option value="" <?php selected($selected_filter, ''); ?>>所有用户</option>
        <option value="super_admin" <?php selected($selected_filter, 'super_admin'); ?>>超级管理员</option>
        <option value="site_admin" <?php selected($selected_filter, 'site_admin'); ?>>站点管理员</option>
    </select>
    <?php
}

步骤2:实现筛选逻辑,修改用户查询

使用pre_get_users钩子拦截用户查询,根据选中的条件过滤结果:

add_action('pre_get_users', 'filter_network_users_by_custom_param');
function filter_network_users_by_custom_param($user_query) {
    global $pagenow;

    // 仅在网络用户管理页面生效
    if ( ! is_network_admin() || $pagenow !== 'users.php' || ! isset($_GET['custom_user_filter']) || empty($_GET['custom_user_filter']) ) {
        return;
    }

    $filter_value = sanitize_text_field($_GET['custom_user_filter']);

    if ($filter_value === 'super_admin') {
        // 筛选拥有超级管理员权限的用户
        $user_query->set('meta_key', 'wp_capabilities');
        $user_query->set('meta_value', serialize(array('super_admin' => true)));
        $user_query->set('meta_compare', 'LIKE');
    } elseif ($filter_value === 'site_admin') {
        // 筛选至少是一个站点管理员的用户
        global $wpdb;
        $site_admin_user_ids = $wpdb->get_col(
            "SELECT DISTINCT user_id 
             FROM $wpdb->usermeta 
             WHERE meta_key LIKE '{$wpdb->prefix}%_capabilities' 
             AND meta_value LIKE '%\"administrator\"%'"
        );
        $user_query->set('include', $site_admin_user_ids);
    }
}

使用说明

  • 把代码添加到主题的functions.php文件,或者创建独立的自定义插件存放(推荐后者,避免主题更新丢失代码)。
  • 示例提供了「超级管理员」「站点管理员」两个筛选选项,你可以根据需求修改选项内容和筛选逻辑,比如按用户注册时间、自定义用户字段等。

内容的提问来源于stack exchange,提问作者user3868334

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 14:03:11