Alle Kommentare bei WordPress Beiträgen rückwirkend deaktivieren

Veröffentlicht am:

Keine Kommentare

Folgendes Szenario: Ihr habt auf einer WordPress Webseite über Jahre hinweg fleißig Beiträge veröffentlicht. Nach Tausenden Beiträgen stellt ihr dann fest, dass ihr die Kommentarfunktion für alle Beiträge deaktivieren wollt. Das kann verschiedene Gründe haben. Spammer haben sich auf euch eingeschossen und die Moderation verursacht einen immer größeren Aufwand. Die zugrundeliegenden Beiträge sind mittlerweile so alt, dass aktuelle Kommentare zum Thema nicht mehr sinnvoll sind usw.

Für zukünftig erscheinende Artikel könnt ihr das problemlos in den Einstellungen im Backend festlegen. Was ist aber mit den bereits veröffentlichten Beiträgen?

Hm.

Eine Möglichkeit wäre, jeden Artikel zu bearbeiten und bei den Beitragseinstellungen die Kommentare zu deaktivieren. Durch das Quickedit Feature in der Beitragsübersicht ist sogar eine Art Massenbearbeitung möglich. Dazu muss die Listenansicht aktiv sein. Dann die gewünschten Beiträge markieren und auf Bearbeiten gehen. Dann lassen sich für diese Beiträge auch die Kommentare deaktivieren. Wenn es sich nur um eine Handvoll von Beiträgen handelt, ist das ein gangbarer Weg. Sind einige Hundert oder Tausend vorhanden, ist auch das mühselig.

WordPress wäre nicht WordPress, wenn es hier nicht ein paar Abkürzungen gäbe.

Ich stelle euch 3 Lösungswege vor. Einen für die Faulen und zwei für die Bastler und Lernwilligen:

1. Kommentare deaktivieren mit dem Plugin Disable Comments

Installiert das Disable Comments Plugin von Samir Shah und aktiviert es.

2. Kommentare über die functions.php deaktivieren

Jetzt wird es Code-lastig. Und immer wenn das so ist, sollte man seine Webseite durch ein Backup sichern.
Man fügt den folgenden Codeschnipsel in die Datei functions.php seines aktiven Themes ein. Nein, wobei … das ist nicht ganz richtig. Die functions.php des aktiven Themes wird überschrieben, sobald das Theme ein Update erhält. Nur bei einem Child Theme ändert sich nichts, wenn das Parent-Theme durch eine Aktualisierung verändert wird. Wenn euch das mit einem Child Theme zu kompliziert ist, verwendet lieber ein Plugin oder schaut in die Dokumentation eures Themes. Wenn es sich um ein Premium Theme wie Avada und Co. handelt, können solche Code Einträge in den Theme-Einstellungen hinterlegt werden und sind dadurch vor Theme-Updates sicher.
Ich persönlich empfehle das Code Snippets Plugin. Allerdings müsst ihr in dem Fall das führende <?php weglassen.

<?php

add_action('admin_init', function () {
    // Redirect any user trying to access comments page
    global $pagenow;
    
    if ($pagenow === 'edit-comments.php') {
        wp_redirect(admin_url());
        exit;
    }

    // Remove comments metabox from dashboard
    remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');

    // Disable support for comments and trackbacks in post types
    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');
        }
    }
});

// Close comments on the front-end
add_filter('comments_open', '__return_false', 20, 2);
add_filter('pings_open', '__return_false', 20, 2);

// Hide existing comments
add_filter('comments_array', '__return_empty_array', 10, 2);

// Remove comments page in menu
add_action('admin_menu', function () {
    remove_menu_page('edit-comments.php');
});

// Remove comments links from admin bar
add_action('init', function () {
    if (is_admin_bar_showing()) {
        remove_action('admin_bar_menu', 'wp_admin_bar_comments_menu', 60);
    }
});

Dank geht an Matt Clements

Das ist die Brutalo-Variante. Hier wird alles deaktiviert und verborgen, was mit Kommentaren zu tun hat.

3. Kommentare manuell via SQL und phpMyAdmin deaktivieren

Ihr ahnt es schon, jetzt gerät der WordPress Anfänger in trübes Gewässer. Allerdings ermöglicht das auch einen ersten Einblick in die zugrundeliegende Datenstruktur bei WordPress. Ich würde diese Lösung immer vorziehen, da es schnell und schmerzlos geht. Und noch mehr als bei der Methode functions.php ist es hier angezeigt, vorher ein komplettes Backup der Seite zu machen!
Also: die Beiträge und Seiten (und noch viel mehr) sind in der WordPress Datenbank (zu 99% MySQL) gespeichert und dort wiederum in verschiedenen Tabellen. Besonders wichtig ist die Tabelle wp_posts, denn diese enthält die Inhalte der gesamten Beiträge (aber auch Seiten, Custom Post Types, Navigationsmenüs und und und) einer WordPress Installation. Hier ist auch die Einstellung für jeden einzelnen Artikel abgelegt, ob das Kommentieren erlaubt ist oder nicht. Wir WordPressler nennen diese Tabelle einfach nur wp_posts, weil das der Standardname einer frischen Installation ist. Das Kürzel wp_ ist nur das standardmäßige Präfix der Tabellen. Es könnte ebenso gut fhGt45_ lauten und die Tabelle damit fhGt45_posts heißen. Findet also heraus, wie der Name eurer wp_posts Tabelle lautet.
Um das Kommentieren nicht nur für künftige Veröffentlichungen zu unterbinden sondern auch für alle zurückliegenden Beiträge, müssen wir die Einstellungen in dieser Tabelle ändern. Und zwar mit einem Rutsch.
Das erreicht ihr mit einem Befehl aus der SQL Sprache, auf der der überwiegende Teil aller Datenbanken hört.

Jeder Webhoster bietet einen anderen Weg an, wie der Kunde mit seiner Datenbank interagieren kann. Ich kann das nicht für alle Hoster aufzeigen. Am verbreitetsten ist die sogenannte phpMyAdmin Oberfläche. Entweder nennt euer Anbieter das von sich aus phpMyAdmin oder verbirgt es hinter Begriffen wie Datenbankverwaltung u.ä.
In der phpMyAdmin Verwaltungsoberfläche sucht ihr die Tabelle wp_posts. Wechselt in über den Reiter SQL in das Eingabefeld und fügt folgenden Code dort ein. Statt wp_posts setzt ihr natürlich den bei euch gültigen Namender Tabelle ein.

UPDATE wp_posts SET comment_status='closed'

Die SQL Eingabe sieht bei phpMyAdmin etwa so aus, wobei auch bei mir das Präfix nicht wp_ lautet.

SQL Fenster in phpMyAdmin mit Befehl zum Ausführen

Wenn alles wie erwartet funktioniert hat, erhaltet ihr eine Erfolgsmeldung wie diese:

SQL Befehl durchgelaufen. WordPress Kommentare für alle Beiträge deaktiviert.

Ihr könnt das auch noch einmal in der posts Tabelle selbst überprüfen. Geht auf die Tabelle und dann auf den Reiter Anzeigen. Im Screenshot ist es die vorletzte Spalte comment_status, wo nun jeder Eintrag auf closed steht.

Ausschnitt aus der wp_posts Tabelle in phpMyAdmin Ansicht

Mit dieser Manipulation der Datenbank schließen wir den Kommentarbereich für alle Beiträge und auch Seiten (!). Stumpf und ohne Feinjustierung.

Bitte beachten Sie: die Informationen in diesem Artikel wurden zum Zeitpunkt seiner Erstellung nach bestem Wissen und Gewissen zusammengetragen, aufbereit und niedergeschrieben.
Diese können heute, abhängig vom Zeitpunkt der Veröffentlichung und des behandelnden Themas, überholt und ungültig sein.
Es obliegt den Lesern, diese Inhalte mit dem aktuellen Wissensstand abzugleichen.

Artikel online seit: 1 Jahr 2 Monaten 2 Tagen

Schreibe einen Kommentar