
WordPress-content naar Hugo omzetten klinkt eenvoudig, maar in de praktijk hangt veel af van de kwaliteit van de conversietool. Ik testte meerdere tools. Sommige zijn specifiek voor Hugo gemaakt, andere leveren vooral Markdown op dat daarna nog aangepast moet worden.
Geteste tools:
Mijn blog bevat content vanaf 2006. Een deel daarvan is ooit in Drupal geschreven, later naar WordPress geconverteerd en daarna naar Hugo verhuisd. Daardoor is mijn WordPress-export waarschijnlijk complexer dan een gemiddelde site. Met 289 posts en pagina’s was handmatig omzetten geen optie. Daarom heb ik uiteindelijk tijd gestoken in een eigen conversietool.
Installatie van de plugin:
wordpress-to-hugo-exporter aan in de WordPress plugin directory.extension=zip.so actief is in php.ini.Resultaat
De export-zip is eenvoudig te gebruiken en bevat de directorystructuur die Hugo nodig heeft. De output lijkt visueel behoorlijk op de oorspronkelijke WordPress-site.
Wat ik minder goed vond: er staat veel HTML in de Markdown-bestanden. Als dat geen probleem is, is dit een bruikbare tool. Als je schone Markdown wilt, moet je verder kijken.
WP2md is een Python-tool. Het is geen WordPress-naar-Hugo converter, maar zet WordPress-export om naar Markdown.
Installatie:
$ pip install git+https://github.com/dreikanter/wp2md
Gebruik:
$ mkdir ~/wp2md
$ wp2md -d ~/wp2md wordpress-export.xml
Resultaat
De Markdown is vrij schoon, met weinig HTML. De YAML/TOML header is alleen niet direct geschikt voor Hugo. Ik zag ook ontbrekende bullet lists en paragrafen. De code van de tool is wel netjes en een goede basis om zelf op voort te bouwen.
ExitWP for Jekyll is gemaakt voor Jekyll. Omdat Jekyll en Hugo andere frontmatter gebruiken, moet je de output aanpassen.
Basisstappen:
$ cd ~
$ unzip exitwp-master.zip
$ mv exitwp-master exitwp-for-jekyll
$ cd exitwp-for-jekyll
$ python exitwp.py
Daarna kun je Jekyll-specifieke headers verwijderen en bestanden hernoemen:
$ perl -i.BAK -ne "print unless /^(author|comments|layout|wordpress_id): /" *.markdown
$ rename 's/\.markdown$/\.md/' *.markdown
Resultaat
Met wat extra bewerkingen is de output bruikbaar voor Hugo. De Markdown is vrij schoon, maar niet perfect. Bullet lists krijgen soms extra witregels en in pre-blocks blijven bepaalde Markdown-markeringen letterlijk zichtbaar. Het resultaat kwam wel dicht bij wat ik wilde, dus ik heb deze tool als basis gebruikt.
ExitWP for Hugo is mijn aangepaste variant van ExitWP. De tool genereert Hugo-vriendelijkere Markdown.
Gebruik:
$ cd ~
$ unzip exitwp-for-hugo-master.zip
$ mv exitwp-for-hugo-master exitwp-for-hugo
$ cd exitwp-for-hugo
$ python exitwp.py
Daarna kun je .markdown bestanden hernoemen naar .md:
$ rename 's/\.markdown$/\.md/' *.markdown
Resultaat
Deze tool is niet perfect, maar was voor mij de beste oplossing. De Markdown-bestanden zijn schoon en bevatten weinig HTML. Tabellen blijven nog HTML, maar dat vond ik acceptabel.
Met sed kun je daarna nog gerichte correcties doen. Maak wel altijd een backup voordat je zulke commando’s op veel bestanden tegelijk uitvoert:
$ sed 's/^ # / $ /' *.md
Editors zoals Notepad++ kunnen daarna ook handig zijn voor zoek-en-vervang acties over meerdere bestanden.
Volgende artikelen in deze Hugo-serie: