/* ============================================================
* ebci63.fr — Blocage de l'énumération des utilisateurs
* Code Snippets > Snippets > Ajouter nouveau
* Nom : Blocage de l'énumération des utilisateurs
* Emplacement d'exécution : « Exécuter partout »
* ============================================================ */
/* ============================================================
* 1. API REST — bloque /wp-json/wp/v2/users et /wp/v2/users/
*
* rest_pre_dispatch s'exécute APRÈS l'authentification :
* les appels authentifiés (mots de passe d'application,
* MCP, outils d'administration) continuent de fonctionner.
* ============================================================ */
add_filter(
'rest_pre_dispatch',
function ( $result, $server, $request ) {
if ( is_user_logged_in() ) {
return $result;
}
$route = $request->get_route();
if ( preg_match( '#^/wp/v2/users$#', $route ) || preg_match( '#^/wp/v2/users/\d+$#', $route ) ) {
return new WP_Error(
'rest_user_enumeration_blocked',
"La liste des utilisateurs n'est pas accessible publiquement.",
array( 'status' => 401 )
);
}
return $result;
},
10,
3
);
/* ============================================================
* 2. Énumération par URL — ?author=N, flux RSS et archives d'auteur
* Ignoré pour les visiteurs connectés et dans l'administration.
* Pour réactiver un jour les pages auteur, retirez « || is_author() ».
* ============================================================ */
add_action(
'template_redirect',
function () {
if ( is_admin() || is_user_logged_in() ) {
return;
}
if ( isset( $_GET['author'] ) || is_author() ) {
wp_safe_redirect( home_url( '/' ), 301 );
exit;
}
},
1
);
/* ============================================================
* 3. oEmbed — retire le nom et l'URL de l'auteur
* (/wp-json/oembed/1.0/embed?url=... les exposait aussi)
* ============================================================ */
add_filter(
'oembed_response_data',
function ( $data ) {
unset( $data['author_name'], $data['author_url'] );
return $data;
},
10,
1
);
Aller au contenu