Quando ho deciso di passare dal CMS WordPress a Grav, ho avuto il problema di convertire tutti i vecchi articoli (e poche pagine) da WP a Markdown. Avendo circa 200 post da convertire, l'unica scelta è stata quella di cercare un programma per automatizzare tale compito.

Ho usato i seguenti programmi/script trovati su GitHub:

Wordpress Export to Markdown

Questo programma parte da un file di salvataggio di WordPress in formato .XML e produce in output tante cartelle quante sono gli articoli/pagine salvate. Il problema che ho riscontrato è che le immagini vengono salvate in una sottocartella e nel formato thumbnail (non il file con le dimensioni originali) e il file era rinominato index.md mentre in Grav i file devono essere salvati con il nome item.md.
Ho dovuto installare Node.JS che non avevo mai utilizzato prima e quindi anche questa cosa ha peggiorato la mia "user experience".

La prima cosa da fare è collegarsi al pannello di amministrazione di WordPress e andare nella sezione Tools > Export e selezionare la voce tutti i contenuti. In questo modo verrà scaricato un file con estensione .XML; è necessario rinominare il file in export.xml.

Per poter eseguire la conversione da file XML di WordPress nel formato Markdown è necessario installare Node.js NPM. Per i sistemi derivati da Ubuntu (come Linux Mint) è necessario eseguire i seguenti comandi:

sudo apt install nodejs
sudo apt-get install nodejs-dev node-gyp libssl1.0-dev
sudo apt-get install npm
sudo apt install npm

In realtà leggendo il file README.md ho notato che per lanciare lo script è necessaria almeno la versione 12.14 di Node.js, mentre con i comandi sopra riportati si era installata la versione 8 e qualcosa.

sudo apt update sudo apt -y upgrade
sudo apt update
sudo apt install curl dirmngr apt-transport-https lsb-release ca-certificates
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - sudo apt -y install nodejs nodejs -v
npm -v

A questo punto è necessario scaricare da GitHub lo script e clonare il repository sul proprio computer. E’ necessario spostare il file export.xml nella cartella dello script che si è creata dopo il clone da GitHub.

Aprire il terminale (se non lo avete già fatto) e andare nella cartella wordpress-export-to-markdown e eseguire lo script per installare i pre-requisiti necessari per l’esecuzione delle script npm install e successivamente node index.js.

Lo script inizierà a convertire il contenuto del file XML in formato Markdown scaricando, dove necessario, le immagini collegate. Da quello che ho recepito dai vari post (ma non ho ancora avuto la certezza) lo script non converte correttamente le pagine ma solo i post (o articoli) del blog. Questo comunque non dovrebbe essere un problema perchè la parte più significativa di un sito gestito con WordPress è rappresentata dai post (o articoli) e non dalle pagine che di solito sono poche e dal contenuto fisso.

Al termine dell’elaborazione sotto la cartelle output ci saranno tante cartelle quante sono i post/pagine convertite in formato markdown che conterranno un file index.md. Le immagini verranno salvate in una ulteriore sottocartella.

A questo punto i file markdown possono essere utilizzati per caricare gli articoli/le pagine su una qualsiasi piattaforma che supporta il linguaggio markdown come Grav, Jekyll o Hugo.

WP2GRAV Markdown Exporter

Questo è un plugin da installare sul proprio sito WordPress e può essere configurato più facilmente rispetto al precedente.

Ho clonato il progetto e ho modificato il file post.md presente nella cartella wp2grav/templates/export in modo da inserire del testo personalizzato nel frontmatter e poi ho caricato la cartella sul server nella cartella wp-plugin e poi ho attivato il plugin dal pannello di configurazione di WpordPress.

Ho lanciato l'esportazione usando il pulsante "go for it!" e nella cartella di output ho prelevato le cartelle con i post e le pagine correttamente scaricate. Rispetto al programma precedentemente utilizzato ha un output più orientato a Grav e soprattutto include le categorie e i tag.