Mit folgendem PHP-Code lassen sich die Kommentare für alle Beiträge, Seiten und andere Post Types nachträglich deaktivieren:
<?php
// Kommentare und Pingbacks für alle Posts deaktivieren
// Test: https://www.example.com/?db_update=close_ping_status_and_comments
// Ausführen: https://www.example.com/?db_update=close_ping_status_and_comments&execute=1
if(isset($_GET['db_update']) and $_GET['db_update']=='close_ping_status_and_comments')
{
global $wpdb;
header('Content-Type: text/plain; charset=utf-8');
// Tabellen-Präfix der WordPress-Datenbank bestimmen
$table_prefix = 'wp_';
// WordPress-Multisite: Tabellen für alle Website selectieren
$tables = $wpdb->get_col("SHOW TABLES LIKE '{$table_prefix}%_posts'");
$tables = array_filter($tables, function($table) {
return preg_match('/^wp_(\d+_)?posts$/', $table);
});
// Tabelle 'wp_posts' ergänzen
$tables[] = $table_prefix . 'posts';
// ping_status und comment_status für Tabellen aktualisieren
foreach ($tables as $table)
{
if(isset($_GET['execute']))
{
echo("Aktualisiere Tabelle: ".$table."\n");
$wpdb->query("UPDATE $table SET ping_status='closed', comment_status='closed'");
}
else echo("zu aktualisierende Tabelle: ".$table."\n");
}
exit();
}
Das Besondere: Der PHP-Code funktioniert auch für WordPress-Multisite-Installationen.