| Server IP : 198.71.58.22 / Your IP : 216.73.216.72 Web Server : Apache/2.4.62 (AlmaLinux) OpenSSL/3.2.2 System : Linux localhost 5.14.0-570.33.2.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Aug 14 07:37:35 EDT 2025 x86_64 User : root ( 0) PHP Version : 8.3.24 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/ |
Upload File : |
#!/bin/bash
# Suppress auto-update and WP Mail SMTP summary emails across all WP instances
SITES_ROOT="/var/www/html"
MYSQL_ROOT_PASS='Idlgean2024##'
MU_PLUGIN_CONTENT='<?php
/**
* Disable WordPress auto-update notification emails and WP Mail SMTP summary.
*/
// Disable plugin/theme auto-update emails
add_filter( '"'"'auto_plugin_update_send_email'"'"', '"'"'__return_false'"'"' );
add_filter( '"'"'auto_theme_update_send_email'"'"', '"'"'__return_false'"'"' );
add_filter( '"'"'auto_core_update_send_email'"'"', '"'"'__return_false'"'"' );
add_filter( '"'"'send_core_update_notification_email'"'"', '"'"'__return_false'"'"' );
'
PHP_UPDATE_SMTP='<?php
// Update wp_mail_smtp option to disable the weekly summary report
$cfg = file_get_contents($argv[1]);
preg_match("/define\s*\(\s*['\''\"]\s*DB_NAME\s*['\''\"]\s*,\s*['\''\"](.*?)['\''\"]\s*\)/", $cfg, $m_name);
preg_match("/define\s*\(\s*['\''\"]\s*DB_USER\s*['\''\"]\s*,\s*['\''\"](.*?)['\''\"]\s*\)/", $cfg, $m_user);
preg_match("/define\s*\(\s*['\''\"]\s*DB_PASSWORD\s*['\''\"]\s*,\s*['\''\"](.*?)['\''\"]\s*\)/", $cfg, $m_pass);
preg_match("/define\s*\(\s*['\''\"]\s*DB_HOST\s*['\''\"]\s*,\s*['\''\"](.*?)['\''\"]\s*\)/", $cfg, $m_host);
preg_match("/\\\$table_prefix\s*=\s*['\''\"](.*?)[''\""]\s*;/", $cfg, $m_prefix);
$db = $m_name[1] ?? "";
$user = $m_user[1] ?? "root";
$pass = $m_pass[1] ?? "";
$host = $m_host[1] ?? "localhost";
$pfx = $m_prefix[1] ?? "wp_";
$pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8mb4", $user, $pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$row = $pdo->query("SELECT option_value FROM {$pfx}options WHERE option_name = '"'"'wp_mail_smtp'"'"'")->fetch(PDO::FETCH_ASSOC);
if (!$row) { echo "SKIP (no wp_mail_smtp option)\n"; exit; }
$opt = unserialize($row["option_value"]);
if (!is_array($opt)) { echo "SKIP (unserialize failed)\n"; exit; }
$already = isset($opt["general"]["summary_report_email_disabled"]) && $opt["general"]["summary_report_email_disabled"] === true;
if ($already) { echo "ALREADY DISABLED\n"; exit; }
$opt["general"]["summary_report_email_disabled"] = true;
$new = serialize($opt);
$stmt = $pdo->prepare("UPDATE {$pfx}options SET option_value = ? WHERE option_name = '"'"'wp_mail_smtp'"'"'");
$stmt->execute([$new]);
echo "UPDATED\n";
'
echo "=== Suppress Emails Script ==="
echo ""
# Write temp PHP script
PHP_SCRIPT=$(mktemp /tmp/update_smtp_XXXXXX.php)
cat > "$PHP_SCRIPT" << 'PHPEOF'
<?php
$cfg = file_get_contents($argv[1]);
preg_match("/define\s*\(\s*['\"]DB_NAME['\"]\s*,\s*['\"](.*?)['\"]\s*\)/", $cfg, $m_name);
preg_match("/define\s*\(\s*['\"]DB_USER['\"]\s*,\s*['\"](.*?)['\"]\s*\)/", $cfg, $m_user);
preg_match("/define\s*\(\s*['\"]DB_PASSWORD['\"]\s*,\s*['\"](.*?)['\"]\s*\)/", $cfg, $m_pass);
preg_match("/define\s*\(\s*['\"]DB_HOST['\"]\s*,\s*['\"](.*?)['\"]\s*\)/", $cfg, $m_host);
preg_match('/\$table_prefix\s*=\s*[\'\"](.*?)[\'\"]\s*;/', $cfg, $m_prefix);
$db = $m_name[1] ?? "";
$user = $m_user[1] ?? "root";
$pass = $m_pass[1] ?? "";
$host = $m_host[1] ?? "localhost";
$pfx = $m_prefix[1] ?? "wp_";
if (empty($db)) { echo "ERROR: could not parse DB_NAME\n"; exit(1); }
try {
$pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8mb4", $user, $pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
} catch (Exception $e) {
// Fall back to root credentials
try {
$pdo = new PDO("mysql:host=localhost;dbname=$db;charset=utf8mb4", "root", "Idlgean2024##", [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
} catch (Exception $e2) {
echo "ERROR: " . $e2->getMessage() . "\n"; exit(1);
}
}
$row = $pdo->query("SELECT option_value FROM {$pfx}options WHERE option_name = 'wp_mail_smtp'")->fetch(PDO::FETCH_ASSOC);
if (!$row) { echo "SKIP (no wp_mail_smtp option)\n"; exit; }
$opt = unserialize($row["option_value"]);
if (!is_array($opt)) { echo "SKIP (unserialize failed)\n"; exit; }
if (!empty($opt["general"]["summary_report_email_disabled"])) { echo "ALREADY DISABLED\n"; exit; }
$opt["general"]["summary_report_email_disabled"] = true;
$new = serialize($opt);
$stmt = $pdo->prepare("UPDATE {$pfx}options SET option_value = ? WHERE option_name = 'wp_mail_smtp'");
$stmt->execute([$new]);
echo "UPDATED\n";
PHPEOF
for site in "$SITES_ROOT"/*/; do
name=$(basename "$site")
cfg="$site/wp-config.php"
mu_dir="$site/wp-content/mu-plugins"
echo "--- $name ---"
# 1. Create mu-plugin to suppress WordPress auto-update emails
mkdir -p "$mu_dir"
cat > "$mu_dir/suppress-update-emails.php" << 'MUEOF'
<?php
/**
* Disable WordPress auto-update notification emails.
*/
add_filter( 'auto_plugin_update_send_email', '__return_false' );
add_filter( 'auto_theme_update_send_email', '__return_false' );
add_filter( 'auto_core_update_send_email', '__return_false' );
add_filter( 'send_core_update_notification_email', '__return_false' );
MUEOF
echo " [mu-plugin] Created: suppress-update-emails.php"
# 2. Update WP Mail SMTP option if wp-config.php exists
if [ -f "$cfg" ]; then
result=$(php "$PHP_SCRIPT" "$cfg" 2>&1)
echo " [smtp summary] $result"
else
echo " [smtp summary] SKIP (no wp-config.php)"
fi
echo ""
done
rm -f "$PHP_SCRIPT"
echo "=== Done ==="