Skip to content

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

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 )

👉 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 CodeCorn™

  • 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

CodeCorn™ 👉 https://github.com/CodeCornTech


📄 License

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