全局禁用 WordPress 查询用户列表
方法一:用 pre_user_query 拦截并中断不必要的用户查询
将以下代码添加到主题的 functions.php 中:
add_action('pre_user_query', function($query) {
// 判断是否是 WP 后台在调用用户查询
if (is_admin()) return;
// 你可以根据请求 URL、查询参数、自定义标识进行精准拦截
if (!empty($query->query_vars['include'])) {
// 返回一个空查询结果
$query->query_where = "WHERE 1=0";
}
});
直接禁用“作者归档页”(防止触发相关 author 查询)
// 方法二:直接禁用“作者归档页”(防止触发相关 author 查询)
add_action('template_redirect', function () {
if (is_author()) {
global $wp_query;
$wp_query->set_404();
status_header(404);
exit;
}
});
彻底禁用 WP_User_Query 的结果(慎用)
//方法三:彻底禁用 WP_User_Query 的结果(慎用)
add_filter('users_pre_query', function($results, $query) {
if (!is_admin()) {
return []; // 直接返回空数组,不让用户列表跑起来
}
return $results;
}, 10, 2);
可选增强(禁止通过 REST API 获取用户)
//可选增强(禁止通过 REST API 获取用户)
add_filter('rest_endpoints', function($endpoints){
unset($endpoints['/wp/v2/users']);
unset($endpoints['/wp/v2/users/(?P<id>[\d]+)']);
return $endpoints;
});