WordPress REST API: waarom je alleen uitgelogde verzoeken blokkeert in plaats van de API helemaal uit te zetten

De WordPress REST API toont de gebruikersnamen van je site via het wp-json-adres, ook aan bezoekers die niet zijn ingelogd. Zet je de API helemaal uit, dan kan het opslaan in de blokeditor mislukken; daarom laat ik zien hoe je alleen uitgelogde verzoeken blokkeert en dat controleert aan de hand van een 401-antwoord.
1️⃣ Wat is de WordPress REST API: het wp-json-adres en wat het doet
De WordPress REST API is een ingebouwde WordPress-functie die sitegegevens zoals berichten, pagina's en gebruikers in JSON-formaat uitwisselt, en reageert onder /wp-json/ achter het siteadres.
Onder /wp-json/ zijn de adressen per gegevenstype verdeeld, zoals [wp/v2/posts], [wp/v2/pages] en [wp/v2/users], en elk van die adressen heet een endpoint. Ook de blokeditor stuurt verzoeken naar deze adressen wanneer hij een bericht opslaat.
https://example.com/wp-json/
https://example.com/wp-json/wp/v2/posts
https://example.com/wp-json/wp/v2/pages
https://example.com/wp-json/wp/v2/users2️⃣ Gebruikersnamen die via wp-json zichtbaar worden
Het endpoint [wp/v2/users] geeft voor elke gebruiker die berichten heeft gepubliceerd een weergavenaam en een slug terug, en standaard staat in de slug gewoon de inlognaam. Ook bij het beheerdersaccount van de testsite https://testpilotweb.com/ waren de slug en de inlognaam gelijk.
Is de inlognaam bekend, dan hoeft een aanvaller alleen nog het wachtwoord te achterhalen om in te loggen; ook op het WordPress-inlogscherm van de testsite werden op 7 oktober 2026 alleen al 2.570 brute-force-pogingen geregistreerd.
Ook als je dit adres blokkeert, blijft dezelfde inlognaam zichtbaar in het adres van de auteurspagina (/author/gebruikersnaam/).
3️⃣ Wat er stukgaat als je de API helemaal uitzet
Zet je de WP REST API helemaal uit, dan mislukt als eerste het opslaan in de blokeditor; daarom verdeelt ook Perfmatters, een van de optimalisatieplugins voor WordPress, het uitschakelen in twee niveaus: [Disable for Non-Admins] en [Disable When Logged Out]. Heeft je site auteurs- of bijdragersaccounts, dan blokkeert [Disable for Non-Admins] ook het opslaan van berichten door die accounts.
Zelfs op een site die alleen uitgelogde verzoeken blokkeerde, toonde een MCP-connector in claude.ai na het afronden van de authenticatie 0 tools. In de serverlog stonden alle MCP-verzoeken als 401, en de oorzaak was dat Perfmatters het verzoek blokkeerde voordat MCP het token controleerde.
| Waarde van [Disable REST API] | users-adres voor uitgelogde bezoekers | Opslaan door niet-beheerdersaccounts | Geschikt voor |
|---|---|---|---|
| Default (Enabled) | Gebruikersnamen zichtbaar | Wordt opgeslagen | — |
| Disable for Non-Admins | 401 | Opslaan mislukt | Sites zonder auteurs- of bijdragersaccounts |
| Disable When Logged Out | 401 | Wordt opgeslagen | Sites met auteursaccounts; voeg voor tokenverbindingen zoals MCP een uitzonderingspad toe |
4️⃣ Alleen uitgelogde verzoeken blokkeren (Perfmatters)
Ga in het WordPress-beheerscherm naar [Settings] → [Perfmatters] → [General], zet [Disable REST API] onder [Core] op [Disable When Logged Out] en klik op [Save Changes].


Talen die Perfmatters ondersteunt: Engels (standaard), Koreaans, Duits, Frans, Italiaans, Nederlands, Portugees (Brazilië), Russisch, Oekraïens, Turks, Bulgaars, Hongaars, Indonesisch, Perzisch, Chinees (vereenvoudigd)

Open je /wp-json/wp/v2/users zonder in te loggen in een incognitovenster, dan krijg je een 401-antwoord met de melding [Sorry, you do not have permission to make REST API requests.], terwijl de blokeditor gewoon blijft opslaan als je bent ingelogd.
[
{
"id": 1,
"name": "User A",
"slug": "user_a",
"link": "https://example.com/author/user_a/"
}
]
{
"code": "rest_authentication_error",
"message": "Sorry, you do not have permission to make REST API requests.",
"data": { "status": 401 }
}
5️⃣ Uitzonderingen op geblokkeerde paden
Moet je bij een blokkade één bepaald pad openzetten, voeg dat pad dan toe aan het filter [perfmatters_rest_api_exceptions] van Perfmatters. Het probleem met 0 tools bij de claude.ai MCP-connector is opgelost met een PHP-snippet in het menu [Code] van Perfmatters, die alleen het MCP-pad als uitzondering instelt.
add_filter('perfmatters_rest_api_exceptions', function($exceptions) {
$exceptions[] = '/mcp/mcp-oauth-server';
return $exceptions;
});Ook na het toevoegen van de uitzondering blokkeert MCP zelf verzoeken zonder token met een 401-antwoord en de melding [MCP authentication required.], terwijl /wp-json/wp/v2/users het 401-antwoord van Perfmatters blijft teruggeven.
[MCP authentication required.]
[Remove REST API Links] in hetzelfde onderdeel [Core] verwijdert alleen de api.w.org-link uit de paginakop en de antwoordheaders; de WP REST API zelf blijft gewoon antwoorden.
🔢 FAQ & aanbevolen content
MCP
WP Rocket MCP Server
Zo koppel je AI-tools zodat ze de cache legen en instellingen wijzigen in plaats van het beheerscherm.
Beveiliging
Wordfence vs iThemes Security
Een vergelijking van twee beveiligingsplugins die brute-force-aanvallen en malware tegenhouden.
ℹ️ Affiliatemelding
De content van deze site bevat affiliatelinks. Koopt een bezoeker via een van deze links een product of dienst, dan ontvangt deze site een commissie van de verkoper. Het bedrag dat de koper betaalt (bij acties gaat het omlaag ↓) wordt daardoor niet hoger. De vermelde prijzen, kortingen en voorraad gelden op het moment van schrijven en kunnen afwijken; controleer ze daarom vóór je aankoop bij de verkoper. Producten worden gekozen en beoordeeld volgens onze eigen criteria, en commissies hebben geen invloed op de volgorde of de inhoud van de beoordelingen.