Al momento stai visualizzando Eliminare revisioni WordPress con WP-CLI
  • Ultima modifica dell'articolo:5 Febbraio 2022
  • Categoria dell'articolo:WP-CLI

Eliminare le revisioni più vecchie è una delle attività che contribuiscono a mantenere pulito il database di WordPress e ottimali le prestazioni del sito, soprattutto in presenza di molti contenuti.

Questo articolo illustra come effettuare l’operazione 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. Si raccomanda di effettuare un backup completo del sito prima di procedere.

Avviso: per funzionare correttamente, i comandi indicati richiedono che WP-CLI sia installata ed eseguibile digitando “wp”. Maggiori informazioni sono disponibili nell’articolo 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 esplicitamente configurato, WordPress crea 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 di WordPress 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 versioni 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 WP-CLI 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”.

Attualmente non sembra esistere un contenitore ufficiale, ma una lista di pacchetti è disponibile su Packagist a questo indirizzo.

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 git@github.com:trepmal/wp-revisions-cli.git
Installing package trepmal/wp-revisions-cli (dev-master)
Updating C:\...\.wp-cli\packages\composer.json to require the package...
Registering git@github.com:trepmal/wp-revisions-cli.git as a VCS repository...
Using Composer to install the package...
---
Loading composer repositories with package information
Updating dependencies
Generating rules
Resolving dependencies through SAT
Looking at all rules.

Dependency resolution completed in 0.000 seconds
Analyzed 73 packages to resolve dependencies
Analyzed 76 rules to resolve dependencies
Lock file operations: 1 install, 0 updates, 0 removals
Installs: trepmal/wp-revisions-cli:dev-master 07eb5c1
- Locking trepmal/wp-revisions-cli (dev-master 07eb5c1)
Writing lock file
Installing dependencies from lock file
Package operations: 1 install, 0 updates, 0 removals
Installs: trepmal/wp-revisions-cli:dev-master 07eb5c1
 - Installing <info>trepmal/wp-revisions-cli</info> (<comment>dev-master 07eb5c1</comment>)
Generating autoload files
---
Success: Package installed.

L’output può variare in base all’ambiente di lavoro (ad esempio sistema operativo Windows o Linux), ma se tutto è andato a buon fine si dovrebbe concludere con il messaggio “Success”.

Come ulteriore verifica, è possibile 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 sarà disponibile il comando wp revisions.


Eliminare le revisioni

Prima di tutto è necessario spostarsi nella cartella che contiene il sito.

Successivamente verificare la situazione attuale visualizzando tutte le revisioni presenti:

wp revisions list --yes

Il parametro --yes consente di visualizzare l’elenco anche quando è molto lungo, senza doverlo confermare in un secondo momento. 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 eliminando tutte le revisioni di ogni post/pagina tranne le ultime tre (quelle più recenti). 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 si può verificare la situazione aggiornata ripetendo il comando:

wp revisions list --yes


Se tutto è andato a buon fine, dovrebbe apparire 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 wp revisions consente anche di effettuare operazioni più articolate. Per un elenco completo è possibile visualizzare l’help:

wp revisions --help


A questo punto il numero di revisioni è stato ridotto, tuttavia continuando a modificare i contenuti queste 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.

Aprire il file wp-config.php e, subito prima della fine dell’area modificabile, inserire 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 versioni del contenuto. Quando viene raggiunto il limite impostato, per ogni nuova versione creata verrà eliminata quella più vecchia.

Naturalmente il valore 5 è solo un esempio: bisogna valutare caso per caso e modificarlo in base alle esigenze (potrebbe essere utile conservarne un numero maggiore o addirittura nessuna).

Per maggiori informazioni sull’argomento, segnalo la pagina dedicata alle revisioni nella documentazione ufficiale di WordPress: https://wordpress.org/support/article/revisions/.