Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Must-Use WordPress plugin to completely lock core updates in managed and production environments.

License

Notifications You must be signed in to change notification settings

CodeCornTech/mu-cc-lock-core-updates

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

7 Commits

Repository files navigation

🔒 CC Lock Core Updates ( MU Plugin )

CodeCorn WordPress MU Plugin License

CodeCornTM 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 CodeCornTM

  • 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 CodeCornTM

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 )

👉 https://github.com/CodeCornTech/mu-cc-lock-core-updates/releases/latest/download/mu-cc-lock-core-updates.php



📦 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 CodeCornTM

  • usare sempre releases/latest ( non main )
  • 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

CodeCornTM 👉 https://github.com/CodeCornTech


📄 License

GPL-2.0+ https://www.gnu.org/licenses/gpl-2.0.html

AltStyle によって変換されたページ (->オリジナル) /