12. Dezember 2023

WordPress:
Kommentare und Pingbacks für alle Beiträge und Seiten deaktivieren

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.