Categorie
Appunti WordPress

“Hello. And Bye.” Tenere a freno lo spam nei commenti di WordPress

Slide realizzate per un mini speech per il WordPress Meetup di Imperia.

Categorie
Appunti Programmazione

Convertire CSV in array multidimensionale in PHP

Ecco un codice per leggere un file CSV in PHP e convertirlo in un array multidimensionale.

Prendo un classico file CSV, di cui per esempio mostro di seguito le prime 4 righe:

2018-10-05 05:54;45334;57732;22;
2018-10-05 05:55;45334;57732;22;
2018-10-05 05:56;45335;57733;22;
2018-10-05 05:57;45335;57733;22;

in cui ogni riga è formata da più campi separati da un punto e virgola (;). In PHP:

$fileName = "nome_del_file.csv"; //questo è il nome del file da caricare
$csvData = file_get_contents($fileName);
$Data = str_getcsv($csvData, "\n"); //scansiono le righe
foreach($Data as &$Row) {
$Row = str_getcsv($Row, ";"); //scansiono gli elementi in ogni riga, separati dal punto e virgola
}

Ora posso accedere a ogni elemento di ogni riga direttamente dalla variabile $Data, ad esempio $Data[0][1] (riga 0 posizione 1) conterrà il valore 45334. Eseguendo il comando print_r($Data) posso stampare a schermo per debug il contenuto dell’array, come mostrato qui sotto:

Array
(
[0] => Array
(
[0] => 2018-10-05 05:54
[1] => 45334
[2] => 57732
[3] => 22
)
//ecc...

Nel caso il separatore non sia il punto e virgola ma la virgola è sufficiente cambiarlo nell’istruzione:

$Row = str_getcsv($Row, ";");

che, nel caso della virgola usata come separatore, diventa:

$Row = str_getcsv($Row, ",");
Categorie
Appunti Linux WordPress

Problema data WordPress e pubblicazione futura articoli

Capita talvolta che pubblicando degli articoli su WordPress non vengano pubblicati e vengano inseriti come pianificati. La prima cosa da controllare è nelle Impostazioni nella scheda Generali, per verificare che il fuso orario e l’ora di sistema siano corrette.

Nel caso apparentemente l’ora sia corretta, o ci siano degli errori sull’ora universale (UTC) indicata, è necessario intervenire sul server che ospita il sito, in quanto molto probabilmente c’è un problema con l’ora di sistema fornita da PHP.

Per risolvere, è sufficiente reinstallare il pacchetto tzdata, ad esempio su server CentOS (o con il gestore di pacchetti YUM) basta lanciare i seguenti comandi:

yum reinstall tzdata
systemctl restart httpd


Categorie
Appunti WordPress

Problema articoli programmati non pubblicati su WordPress

Può verificarsi talvolta un problema di pubblicazione saltata per gli articoli programmati su WordPress. Non è sempre facile capire la natura del problema, su un sito che gestisco per un cliente ha inziato a capitare dopo un aggiornamento di WordPress stesso. Molti siti e blog consigliano di concentrarsi sul file wp-cron.php, che si occupa della gestione delle operazioni ricorrenti in WordPress, tuttavia ho risolto affidandomi ai seguenti plugin:

WP Crontrol

WP Missed Schedule (The Original)

I due plugin non necessitano di particolari impostazioni, è sufficiente installarli e attivarli.

Categorie
Appunti WordPress

Come rimuovere in blocco utenti e post in WordPress

Può capitare di avere la necessità di rimuovere numerosi elementi di WordPress. Magari un sito che inizia a diventare troppo grande e lento può pensare di sfoltire i vecchi archivi: mi è capitato su un giornale online che aveva oltre 50.000 post su WordPress e poco budget per poter upgradare le risorse del proprio server per garantire una velocità ottimale ai propri utenti. Un altro sito invece si ritrovava circa 2000 utenti sottoscrittori dovuti a un periodo in cui per un errore non era stata impedita o verificata la registrazione automatica su WordPress, diventando presto bersaglio di bot e spam.

Fatte le opportune valutazioni (in particolare sull’indicizzazione sui motori dei post da eliminare, da non trascurare assolutamente!), ho proceduto con  varie prove con script e plugin vari, ottenendo il miglior risultato con l’utilizzo di un plugin semplice e funzionale (che presenta nella versione free molte opzioni utili, di cui alcune più avanzate presenti nella versione a pagamento): Bulk WP

Come procedere:
prima di tutto effettuare un backup completo del sito, dato che cancellare sarà un’operazione irreversibile;
installare e attivare il plugin;
selezionare gli elementi da eliminare (filtrandoli ad esempio per mese, tipo di utente e così via);
procedere con l’eliminazione.

Una problematica che si può presentare è il timeout del server nel caso l’eliminazione impieghi troppo tempo. In tal caso, occorre armarsi di pazienza ed effettuare le eliminazioni a “gruppi”. Oppure se si ha possibilità di intervenire sui parametri del server si può (anche solo temporaneamente) modificare il tempo di esecuzione degli script portandolo dai classici 30-60 secondi impostati di default a valori più elevati.