- Treviso, TV 31022
- info@soluzioniweb.net
- +328 25 91 995
- +342 57 28 585
Nel mondo di WordPress, la gestione delle operazioni pianificate (cron job) è fondamentale per automatizzare processi come l’invio di email, la pubblicazione di contenuti, il backup dei dati e molto altro. Tuttavia, il sistema cron integrato in WordPress può diventare complesso e difficile da gestire, specialmente quando si utilizzano numerosi plugin che aggiungono le proprie operazioni pianificate. In questo articolo, vi mostrerò come ho creato un plugin personalizzato per gestire cron job utilizzando una tabella MySQL dedicata, fornendo un maggiore controllo e riducendo la complessità del sistema.
Prima di addentrarci nel plugin, è importante comprendere cosa sia un cron job. Nel sistema operativo Linux, cron è un demone che permette di eseguire automaticamente comandi o script a intervalli di tempo specificati. Questo è estremamente utile per automatizzare operazioni ripetitive, come backup, aggiornamenti di sistema o invio di report.
In WordPress, il sistema cron simula questo comportamento attraverso la funzione wp-cron.php, che però dipende dalle visite degli utenti per attivarsi. Questo può causare problemi in siti con basso traffico o può sovraccaricare il server in siti molto attivi. Inoltre, il sistema cron di WordPress può diventare complicato da gestire quando si utilizzano numerosi plugin che aggiungono le proprie operazioni.
Creare un sistema cron personalizzato offre diversi vantaggi:
Il mio plugin, chiamato Custom MySQL Cron Plugin, è progettato per gestire cron job personalizzati utilizzando una tabella MySQL dedicata. Ecco le sue principali funzionalità:
Il plugin utilizza una tabella MySQL per memorizzare i cron job, con campi come id
, name
, function_name
, arguments
, scheduled_at
, executed_at
, e result
.
Per eseguire i cron job, ho creato uno script PHP che:
option_active_plugins
, lo script carica solo i plugin necessari (ad esempio, il nostro plugin e altri specifici come Gravity Flow).WP_USE_THEMES
come false
, impediamo a WordPress di caricare il tema, riducendo ulteriormente il carico.execute_tasks()
del plugin per eseguire i cron job pianificati.<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Filtra i plugin attivi per includere solo quelli necessari
add_filter('option_active_plugins', function($plugins) {
return [
'custom-mysql-cron-plugin/custom-mysql-cron-plugin.php',
'gravityflow/gravityflow.php'
];
});
// Evita di caricare il tema
define('WP_USE_THEMES', false);
// Carica WordPress
require_once __DIR__ . '/../../../../wp-load.php';
// Verifica di sicurezza
if (!isset($_GET['key']) || $_GET['key'] !== 'TOKEN_3MDNWNIORA!') {
http_response_code(403);
error_log('Token non valido');
die('Accesso non autorizzato');
} else {
error_log('Token valido');
}
// Esegue i cron job
$result = Custom_MySQL_Cron_Plugin::get_instance()->execute_tasks();
// Risposta di successo
http_response_code(200);
error_log('Attività completata');
?>
Nel sistema operativo Linux, il cron è un demone che esegue comandi o script a intervalli di tempo specificati. I cron job sono definiti nel file crontab, che specifica minuti, ore, giorni del mese, mesi e giorni della settimana in cui eseguire i comandi.
0 2 * * * /usr/bin/php /var/www/html/wp-cron.php
Questo comando esegue il file wp-cron.php
ogni giorno alle 2:00 AM.
Creare un plugin per gestire cron job personalizzati in WordPress offre numerosi vantaggi in termini di controllo, efficienza e sicurezza. Riducendo la complessità del sistema e caricando solo le risorse necessarie, possiamo migliorare le prestazioni del nostro sito e garantire che le operazioni pianificate vengano eseguite in modo affidabile.
Se gestite un sito WordPress complesso o avete esigenze specifiche per l’automazione di processi, considerare la creazione di un sistema cron personalizzato può fare la differenza.
Richiedi adesso il plugin gratuitamente