CC Lock Core Updates self-updates
Must-Use WordPress plugin to completely lock core updates in managed and production environments.
by CodeCorn™ · github.com/codecorntech/mu-cc-lock-core-updates · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/codecorntech/mu-cc-lock-core-updates/archive/refs/heads/main.zipShips its own WordPress updater (Update URI header), so new versions show up under Dashboard → Updates.
🔒 CC Lock Core Updates ( MU Plugin )
CodeCorn™ Must-Use Plugin
Blocca completamente gli aggiornamenti del core WordPress , sia automatici che manuali .
Pensato per ambienti gestiti , enterprise , Docker , CI/CD dove gli update devono essere controllati centralmente e non lasciati alla UI WordPress .
✨ Features
- ❌ Disabilita il check degli aggiornamenti core
- ❌ Disabilita gli aggiornamenti automatici
- ❌ Nasconde la pagina Bacheca → Aggiornamenti
- ❌ Blocca l’accesso diretto a
update-core.php - ✅ Zero configurazione
- ✅ Zero overhead
- ✅ MU-Plugin ( non disattivabile da admin )
- ✅ Zero overhead
- ✅ Kill-switch centralizzato via ENV / wp-config
- ✅ WP-CLI sempre consentito
🔧 Toggle Globale ( Enterprise )
Il comportamento del plugin può essere abilitato / disabilitato centralmente senza toccare il file.
.env
CC_LCU_ENABLED=true
🧪 Esempi di uso ( chiari )
🔴 Spegni tutto ( bypass totale MU )
define('CC_LCU_ENABLED', false);
🟡 Blocca solo plugin
define('CC_LCU_LOCK_CORE', false);
🟡 Blocca solo core
define('CC_LCU_LOCK_PLUGINS', false);
🟢 Default ( tutto attivo )
// nessuna define
🔌 Filtro cc_lcu_blocked_plugin_update_ui
⚠️ Usane SOLO UNO, in base alla versione di PHP in uso.
✔️ PHP < 7.4 ( compatibile con requisito minimo )
add_filter('cc_lcu_blocked_plugin_update_ui', function ($plugins) {
$plugins = array_merge($plugins, [
'altro-plugin/altro-plugin.php',
'secondo-plugin/secondo-plugin.php',
'terzo-plugin/terzo-plugin.php',
]);
return array_unique($plugins);
});
✔️ PHP ≥ 7.4 ( sintassi moderna )
add_filter('cc_lcu_blocked_plugin_update_ui', function ($plugins) {
return array_unique([
...$plugins,
'altro-plugin/altro-plugin.php',
'secondo-plugin/secondo-plugin.php',
'terzo-plugin/terzo-plugin.php',
]);
});
🧠 Note importanti
- ❌ NON usare entrambi i filtri
- ✅ La logica è identica, cambia solo la sintassi
- 📌 Il MU-plugin dichiara
Requires PHP: 7.2 - 🔧 Ambienti Docker / Enterprise possono usare tranquillamente PHP ≥ 7.4
✅ Raccomandazione CodeCorn™
- Produzione conservativa → versione PHP < 7.4
- Ambienti moderni / CI-CD → versione PHP ≥ 7.4
- Futuro v1.5.0 → possibile bump requisito PHP
📧 Filtro cc_lcu_allowed_emails
Statico
add_filter('cc_lcu_allowed_emails', function ($emails, $user) {
$emails[] = 'admin@codecorn.it';
return $emails;
}, 10, 2);
Dinamico per ruolo
add_filter('cc_lcu_allowed_emails', function ($emails, $user) {
if (in_array('administrator', (array) $user->roles, true)) {
$emails[] = $user->user_email;
}
return array_unique($emails);
}, 10, 2);
✅ Strategia consigliata CodeCorn™
1️⃣ Flag globale di bypass
CC_LCU_ENABLED
| Valore | Effetto |
|---|---|
true |
MU attivo |
false |
MU completamente bypassato |
🔐 Implementazione env-driven ( sicura )
wp-config.php / WORDPRESS_CONFIG_EXTRA
defined('CC_LCU_ENABLED')
|| define(
'CC_LCU_ENABLED',
filter_var(
getenv('CC_LCU_ENABLED') ?: true,
FILTER_VALIDATE_BOOLEAN
)
);
.env
CC_LCU_ENABLED=true
🧩 Extra ( opzionali )
🔁 Toggle via filtro
if (! apply_filters('cc_lcu_enabled', CC_LCU_ENABLED)) {
return;
}
Uso :
add_filter('cc_lcu_enabled', '__return_false');
🛡️ Hook di logging
do_action(
'cc_lcu_blocked_access',
$user,
$pagenow
);
🧠 Safe-mode staging
if (
defined('WP_ENVIRONMENT_TYPE') &&
WP_ENVIRONMENT_TYPE !== 'production'
) {
return;
}
📥 Download diretto ( MU Plugin )
📦 Installazione
🔹 Installazione iniziale
mkdir -p wp-content/mu-plugins || exit 1
cd wp-content/mu-plugins || exit 1
curl -O https://raw.githubusercontent.com/CodeCornTech/mu-cc-lock-core-updates/main/mu-cc-lock-core-updates.php
Oppure copia manualmente :
wp-content/mu-plugins/mu-cc-lock-core-updates.php
I MU-plugin vengono caricati automaticamente da WordPress. Non è necessario attivarli dalla UI admin.
🔄 Aggiornamento ( consigliato )
Per aggiornare il plugin all’ultima versione disponibile senza rimuovere il file :
cd wp-content/mu-plugins || exit 1
curl -L -o mu-cc-lock-core-updates.php \
https://github.com/CodeCornTech/mu-cc-lock-core-updates/releases/latest/download/mu-cc-lock-core-updates.php
✔ sovrascrive il file esistente ✔ mantiene permessi e path ✔ compatibile con Docker / CI-CD ✔ zero downtime
🧠 Aggiornamento via CI / Docker ( esempio )
curl -fsSL \
https://github.com/CodeCornTech/mu-cc-lock-core-updates/releases/latest/download/mu-cc-lock-core-updates.php \
-o /var/www/html/wp-content/mu-plugins/mu-cc-lock-core-updates.php
✅ Best practice CodeCorn™
- usare sempre
releases/latest( nonmain) - versionamento controllato
- update idempotente
- rollback immediato possibile
🧠 Quando usarlo
Questo plugin è consigliato se :
- usi Docker / Kubernetes
- deployi via CI/CD
- hai update gestiti esternamente
- lavori su hosting enterprise
- vuoi evitare update accidentali in produzione
❌ Non consigliato su siti entry-level o hosting condivisi senza controllo versioni .
🛡️ Comportamento
Una volta attivo :
- WordPress non rileva aggiornamenti core
- WordPress non esegue aggiornamenti automatici
- Gli admin non vedono la pagina aggiornamenti
- L’accesso diretto viene bloccato con HTTP 403
🧩 Compatibilità
- WordPress ≥ 5.8
- Testato fino a WordPress 6.9
- PHP ≥ 7.4
- Multisite ✅
🧪 Versioning
Seguendo Semantic Versioning :
MAJOR.MINOR.PATCH
🧩 TODO Variante ultra-strict ( opzionale )
Se si vuole essere ancora più paranoico ( staging , plugin terzi aggressivi ) :
static $ran = false;
if ($ran) {
return;
}
$ran = true;
Usabile insieme o al posto di did_action.
👤 Autore
CodeCorn™ 👉 https://github.com/CodeCornTech