Eliminare revisioni WordPress con WP-CLI
  • Post last modified:19 Giugno 2020
  • Post category:WP-CLI
  • Post comments:0 Commenti

Eliminare le revisioni più vecchie è una delle attività che contribuiscono a mantenere pulito il database di WordPress e quindi a migliorarne le prestazioni, soprattutto in siti con molti contenuti.

In questo articolo ti spiego come farlo utilizzando WP-CLI, lo strumento ufficiale per gestire WordPress da linea di comando.

Attenzione: le informazioni riportate prevedono l’eliminazione di dati dal database di WordPress. Suggerisco di effettuare un backup prima di applicare questa procedura su un sito in produzione.

Avviso: per funzionare, i comandi indicati richiedono che WP-CLI sia installata ed eseguibile digitando “wp”. Se hai bisogno di maggiori informazioni consulta Gestire WordPress da terminale con WP-CLI.

Che cosa sono le revisioni

Ogni volta che si modifica un post o una pagina, WordPress crea una nuova revisione. Questa funzionalità, utile per recuperare il contenuto precedente in caso di necessità, ha il difetto di non avere un limite predefinito. Se non espressamente configurato, infatti, WordPress continua a creare un numero illimitato di revisioni.

Ogni revisione corrisponde ad ulteriori dati salvati nel database, per cui è facile intuire come, con il passare del tempo, questo possa crescere di dimensione ed avere un impatto negativo sulle prestazioni del sito.

La dashboard mette a disposizione solo alcune funzioni relative alle revisioni. In particolare:

  • mostra quante revisioni sono state create per l’elemento che stiamo modificando:
Indicazione del numero di revisioni presenti.
  • permette di confrontare il contenuto attuale con quello delle revisioni precedenti e “tornare indietro nel tempo”:
Confronto tra contenuti di due revisioni.

Tutto qua. Niente che consenta di eliminare le revisioni più vecchie.

Tuttavia, come spesso accade, viene in nostro aiuto quel gioiello di WP-CLI.


Estendere WP-CLI

Precisiamo: nella configurazione di base non ci aiuta affatto, perchè non contiene comandi per la gestione delle revisioni. Ma uno dei suoi punti di forza è l’espandibilità attraverso l’installazione di pacchetti.

Per conoscere quelli disponibili puoi dare un’occhiata qui: WP-CLI Package Index.

In questo caso, quello che ci serve è trepmal/wp-revisions-cli.

Per installare il pacchetto è sufficiente utilizzare il comando package con questa sintassi:

wp package install trepmal/wp-revisions-cli

Installing package trepmal/wp-revisions-cli (dev-master)
Updating C:\...\.wp-cli\packages\composer.json to require the package...
Using Composer to install the package...
---
Loading composer repositories with package information
Updating dependencies
Resolving dependencies through SAT
Looking at all rules.

Dependency resolution completed in 0.015 seconds
Analyzed 1491 packages to resolve dependencies
Analyzed 49736 rules to resolve dependencies
Package operations: 1 install, 0 updates, 0 removals
Installs: trepmal/wp-revisions-cli:dev-master 2282263
 - Installing trepmal/wp-revisions-cli (dev-master 2282263)
Writing lock file
Generating autoload files
---
Success: Package installed.

L’output può variare leggermente in base al tuo ambiente di lavoro (ad esempio Windows o Linux), ma se tutto è andato a buon fine dovresti vedere il messaggio “Success”.

Come ulteriore verifica, puoi visualizzare la lista dei pacchetti installati:

wp package list

+--------------------------+---------+------------+--------+----------------+
| name                     | authors | version    | update | update_version |
+--------------------------+---------+------------+--------+----------------+
| trepmal/wp-revisions-cli |         | dev-master | none   |                |
+--------------------------+---------+------------+--------+----------------+


Da questo momento potrai utilizzare il nuovo comando revisions.


Eliminare le revisioni

Se non lo hai già fatto, posizionati nella cartella che contiene il sito.

Poi verifica la situazione attuale visualizzando tutte le revisioni presenti:

wp revisions list --yes

Il parametro --yes consente di visualizzare l’elenco anche quando è molto lungo. Il comando restituisce un output simile a questo:

+-----+--------------------+-------------+
| ID  | post_title         | post_parent |
+-----+--------------------+-------------+
| 342 | Articolo 2         | 270         |
| 343 | Articolo 2         | 270         |
| 344 | Articolo 2         | 270         |
| 345 | Articolo 2         | 270         |
| 346 | Articolo 2         | 270         |
| 347 | Articolo 2         | 270         |
| 348 | Articolo 2         | 270         |
| 349 | Articolo 2         | 270         |
| 350 | Articolo 2         | 270         |
| 351 | Articolo 2         | 270         |
| 332 | Articolo 1         | 268         |
| 333 | Articolo 1         | 268         |
| 334 | Articolo 1         | 268         |
| 335 | Articolo 1         | 268         |
| 336 | Articolo 1         | 268         |
| 337 | Articolo 1         | 268         |
| 338 | Articolo 1         | 268         |
| 339 | Articolo 1         | 268         |
| 340 | Articolo 1         | 268         |
| 341 | Articolo 1         | 268         |
| 322 | Blog               | 44          |
| 323 | Blog               | 44          |
| 324 | Blog               | 44          |
| 325 | Blog               | 44          |
| 326 | Blog               | 44          |
| 327 | Blog               | 44          |
| 328 | Blog               | 44          |
| 329 | Blog               | 44          |
| 330 | Blog               | 44          |
| 331 | Blog               | 44          |
| 312 | Cookie Policy      | 19          |
| 313 | Cookie Policy      | 19          |
| 314 | Cookie Policy      | 19          |
| 315 | Cookie Policy      | 19          |
| 316 | Cookie Policy      | 19          |
| 317 | Cookie Policy      | 19          |
| 318 | Cookie Policy      | 19          |
| 319 | Cookie Policy      | 19          |
| 320 | Cookie Policy      | 19          |
| 321 | Cookie Policy      | 19          |
| 292 | Home               | 11          |
| 293 | Home               | 11          |
| 294 | Home               | 11          |
| 295 | Home               | 11          |
| 296 | Home               | 11          |
| 297 | Home               | 11          |
| 298 | Home               | 11          |
| 299 | Home               | 11          |
| 300 | Home               | 11          |
| 301 | Home               | 11          |
| 282 | Privacy Policy     | 3           |
| 283 | Privacy Policy     | 3           |
| 284 | Privacy Policy     | 3           |
| 285 | Privacy Policy     | 3           |
| 286 | Privacy Policy     | 3           |
| 287 | Privacy Policy     | 3           |
| 288 | Privacy Policy     | 3           |
| 289 | Privacy Policy     | 3           |
| 290 | Privacy Policy     | 3           |
| 291 | Privacy Policy     | 3           |
+-----+--------------------+-------------+

Per ogni revisione sono mostrati il titolo e l’ID del post (articolo/pagina) a cui appartiente.

Supponiamo di voler fare pulizia conservando le ultime 3 revisioni per ogni post ed eliminando le altre. Il comando sarà:

wp revisions clean 3

Cleaning revisions for 9 post(s)  100% [============================================] 0:01 / 0:02
Success: Finished removing 56 old revisions.


Al termine puoi verificare la situazione aggiornata ripetendo il comando:

wp revisions list --yes


Se tutto è andato a buon fine, dovresti vedere una versione ridotta dell’elenco precedente.

+-----+--------------------+-------------+
| ID  | post_title         | post_parent |
+-----+--------------------+-------------+
| 349 | Articolo 2         | 270         |
| 350 | Articolo 2         | 270         |
| 351 | Articolo 2         | 270         |
| 339 | Articolo 1         | 268         |
| 340 | Articolo 1         | 268         |
| 341 | Articolo 1         | 268         |
| 329 | Blog               | 44          |
| 330 | Blog               | 44          |
| 331 | Blog               | 44          |
| 319 | Cookie Policy      | 19          |
| 320 | Cookie Policy      | 19          |
| 321 | Cookie Policy      | 19          |
| 299 | Home               | 11          |
| 300 | Home               | 11          |
| 301 | Home               | 11          |
| 289 | Privacy Policy     | 3           |
| 290 | Privacy Policy     | 3           |
| 291 | Privacy Policy     | 3           |
+-----+--------------------+-------------+


Il comando revisions consente anche di effettuare operazioni più articolate, per questo ti suggerisco di dare un’occhiata alle opzioni disponibili con:

wp revisions --help


A questo punto il numero di revisioni è stato ridotto, tuttavia continuando a modificare i contenuti riprenderanno a crescere.

Ma c’è una soluzione.


Impostare un limite alle revisioni

Per porre un freno alla creazione di revisioni è possibile utilizzare un’apposita costante di WordPress.

Apri il file wp-config.php del tuo sito e, subito prima della fine dell’area modificabile, inserisci questa riga:

define( 'WP_POST_REVISIONS', 5 );

/* That's all, stop editing! Happy publishing. */


Da questo momento, per ogni post, saranno conservate le ultime 5 revisioni. Dal momento in cui viene raggiunto il limite, ad ogni nuova revisione corrisponde l’eliminazione di quella più vecchia.

Naturalmente il valore 5 è solo un esempio: sostituiscilo con quello più adatto alle tue esigenze.

Se ti interessa approfondire l’argomento, ti segnalo la pagina dedicata alle revisioni nella documentazione ufficiale di WordPress: https://wordpress.org/support/article/revisions/.

Lascia un commento