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.

Togliere variazione dai prezzi dei prodotti Woocommerce

Negli ecommerce realizzati con WordPress e il plugin Woocommerce spesso si ha la necessità grafica di rimuovere la visualizzazione del range di prezzi nei prodotti che vengono creati con una variazione:

Visualizzazione range di prezzi per prodotti con variazioni

La modifica può essere facilmente implementata inserendo una funzione personalizzata nel file functions.php presente nel proprio tema (ricordandosi di creare un tema figlio, se non presente). E’ sufficiente inserire il codice seguente al fondo del file functions.php:

/**
 * Inserire la dicitura "Da" nelle variazioni di prezzo
 */
function iconic_variable_price_format( $price, $product ) {
 
 $prefix = sprintf('%s ', __('Da ', 'iconic')); //cambiare qui la dicitura
 
 $min_price_regular = $product->get_variation_regular_price( 'min', true );
 $min_price_sale = $product->get_variation_sale_price( 'min', true );
 $max_price = $product->get_variation_price( 'max', true );
 $min_price = $product->get_variation_price( 'min', true );
 
 $price = ( $min_price_sale == $min_price_regular ) ?
 wc_price( $min_price_regular ) :
 '<del>' . wc_price( $min_price_regular ) . '</del>' . '<ins>' . wc_price( $min_price_sale ) . '</ins>';
 
 return ( $min_price == $max_price ) ?
 $price :
 sprintf('%s%s IVA Incl.', $prefix, $price);
 
}
 
add_filter( 'woocommerce_variable_sale_price_html', 'iconic_variable_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'iconic_variable_price_format', 10, 2 );

Ottenendo il risultato seguente:

Visualizzazione con prezzo di partenza in Woocommerce

Lo stesso acadrà anche nella pagina del singolo prodotto rendendola più chiara per un potenziale acquirente:

PHP: Salvare data nel formato GG/MM/AAAA in un campo DATETIME di MySQL

Questo appunto è un codice PHP utile per salvare in un database MySQL una data inserita in un form nel formato “classico” GG/MM/AAAA, quando il campo nel database è di tipo DATETIME ovvero “Y-m-d H:i:s”.

Nel form richiedo di inserire la data in questo formato GG/MM/AAAA:

<input type="text" name="data">

Inviato il form, da PHP  manipolo il campo ricevuto (nel mio caso chiamato “data“,  recuperato con $_POST[“data“]), con la funzione di PHP date():

$data = date('Y-m-d H:i:s', strtotime(str_replace('/','-',$_POST["data"])));

Ora posso salvare il contenuto di $data direttamente nell’opportuno campo del database.

Per fare l’operazione inversa ovvero formattare correttamente la data recuperata dal database con una query (nel mio esempio il campo si chiama proprio data e la tabella mia_tabella) uso la funzione di SQL DATE_FORMAT e salvo il risultato nel nuovo campo data_formattata:

mysql_query(SELECT DATE_FORMAT(data,'%d/%m/%Y') as data_formattata FROM mia_tabella)