Naar de inhoud

Reacties in WordPress echt uitschakelen, niet half

De instelling in WordPress zet alleen reacties op nieuwe berichten uit. Bestaande pagina's, de reactiefeed en de REST-route blijven gewoon open staan.

Gecontroleerd 9 september 2026 4 min lezen

Op de meeste zakelijke sites voegen reacties niets toe. Je krijgt er geen gesprek mee op gang, wel dertig spamberichten per week over horloges en cryptomunten. En elk reactieformulier is een openbaar formulier dat zonder inloggen data naar je database stuurt.

Uitzetten dus. Alleen doet dat vinkje in de instellingen minder dan je denkt.

Wat de instelling wel en niet doet

Onder Instellingen, Discussie staat “Mensen toestaan reacties te plaatsen op nieuwe berichten”. Haal je dat vinkje weg, dan geldt dat alleen voor berichten die je daarna aanmaakt.

Alles wat er al staat houdt zijn eigen instelling. Elk bericht heeft namelijk een eigen comment_status in de database, en die is bij het opslaan overgenomen van de toenmalige standaard. Honderd oude berichten blijven dus vrolijk reacties aannemen.

Drie dingen dus: nieuwe berichten, bestaande berichten, en de routes eromheen.

Stap 1: de standaard uitzetten

Ga naar Instellingen, Discussie en haal de vinkjes weg bij:

  • Proberen elke blog te melden die in het bericht gelinkt is
  • Linkmeldingen van andere blogs toestaan
  • Mensen toestaan reacties te plaatsen op nieuwe berichten

Die eerste twee gaan over pingbacks en trackbacks. Ook een spamkanaal, en niemand gebruikt het nog.

Stap 2: alles wat er al staat dichtzetten

Met WP-CLI ben je in één regel klaar:

wp post list --post_type=post,page --format=ids | xargs wp post update --comment_status=closed --ping_status=closed

Geen SSH? Dan kan het via de admin. Ga naar Berichten, vink alles aan met de kop-checkbox, kies Bewerken bij Bulkacties en klik Toepassen. Zet Reacties op Niet toestaan en klik Bijwerken. Herhaal dat voor Pagina’s.

Let op dat je de bulkactie per pagina van de lijst moet doen. Staat je overzicht op twintig per pagina, zet dat dan eerst even hoger via de tabinstellingen rechtsboven.

Stap 3: de code die het definitief dichthoudt

De stappen hierboven zijn instellingen, en instellingen kunnen terugkomen. Importeer je later content, of zet een plugin iets terug, dan staat het weer open. Met een stukje code in je thema of in een kleine plugin sluit je het af op codeniveau.

<?php
/**
 * Reacties uitschakelen.
 */

// Reacties en pingbacks dicht, ongeacht wat er in de database staat.
add_filter( 'comments_open', '__return_false', 20 );
add_filter( 'pings_open', '__return_false', 20 );

// Bestaande reacties niet meer tonen.
add_filter( 'comments_array', '__return_empty_array', 10 );

// Reactie-ondersteuning uit alle posttypes halen.
add_action( 'init', function () {
    foreach ( get_post_types() as $post_type ) {
        if ( post_type_supports( $post_type, 'comments' ) ) {
            remove_post_type_support( $post_type, 'comments' );
            remove_post_type_support( $post_type, 'trackbacks' );
        }
    }
} );

// Het menu weg, en wie de URL intikt gaat terug naar het dashboard.
add_action( 'admin_menu', function () {
    remove_menu_page( 'edit-comments.php' );
} );

add_action( 'admin_init', function () {
    global $pagenow;

    if ( 'edit-comments.php' === $pagenow ) {
        wp_safe_redirect( admin_url() );
        exit;
    }
} );

// De reactie-teller uit de adminbalk.
add_action( 'wp_before_admin_bar_render', function () {
    global $wp_admin_bar;
    $wp_admin_bar->remove_node( 'comments' );
} );

// De REST-route waarmee je buiten de admin om kunt posten.
add_filter( 'rest_endpoints', function ( $endpoints ) {
    unset( $endpoints['/wp/v2/comments'] );
    unset( $endpoints['/wp/v2/comments/(?P<id>[d]+)'] );

    return $endpoints;
} );

Zet dit in een eigen plugin in plaats van in functions.php. Wissel je ooit van thema, dan staat alles anders weer open op het moment dat je er niet aan denkt.

Stap 4: de oude spam opruimen

Reacties die er al staan blijven in je database zitten. Weg ermee:

wp comment delete $(wp comment list --format=ids) --force

Maak eerst een back-up. Dit is niet terug te draaien, en op een site met een echt archief gooi je zo per ongeluk iets weg dat er wel toe deed.

Waar het meestal misgaat

  • Alleen het menu weghalen. Dat is puur cosmetisch. Het formulier en de REST-route blijven werken, je ziet de spam alleen niet meer binnenkomen.
  • Bestaande berichten vergeten. Verreweg de meest voorkomende fout, en precies waar de spam vandaan blijft komen.
  • Het reactieveld blijft zichtbaar. Sommige thema’s laden hun reactiesjabloon zonder comments_open() te checken. Kijk dan in het thema zelf.
  • WooCommerce-reviews verdwijnen. Die lopen over hetzelfde systeem. Draai je een webshop, sluit product dan uit in de foreach hierboven.

Tot slot

Een reactieplugin doet ongeveer hetzelfde als de code hierboven, maar dan met een instellingenpagina erbij. Wil je er niet over nadenken, prima keuze. Vind je het onnodig om een plugin te draaien voor iets dat twintig regels is, dan weet je nu wat die twintig regels zijn.

Loop je hier alsnog op vast?

Stuur me een bericht met wat je precies ziet gebeuren. Meestal weet ik binnen een paar minuten waar het zit.

Kom in contact
Contact

Stel je technische vraag

Vertel wat er speelt op je site; ik laat weten wat er nodig is.

Dit veld is bedoeld voor validatiedoeleinden en moet niet worden gewijzigd.
Hoe concreter, hoe beter ik kan inschatten wat er nodig is.