När jag skriver mina inlägg för denna blogg går jag till väga som jag beskrev den 1 november 2014: jag sparar inläggen som markdownfiler på min hårddisk och använder sedan Pandoc (MacFarlane 2016) för att överföra dem till HTML. På så vis kan jag automatisera hanteringen av bibliografier, fotnoter och så vidare. Sedan en tid tillbaka har jag använt mig av ett skript som dels sköter kompileringen med Pandoc, dels överför den på så sätt genererade HTML-koden till bloggen på automatisk väg, utan att jag behöver gå via WordPress webbgränssnitt. När inlägget postats returneras det ID-nummer som det tilldelats på bloggen, vilket sedan lagras i den ursprungliga källfilen. På så vis har jag enkelt kunnat göra ändringar i befintliga inlägg via skriptet.
WordPress har ett så kallat API som bygger på standarden XML-RPC för att göra det möjligt att fjärrstyra programmet, vilket jag använt mig av i mitt skript. Nu har detta emellertid slutat att fungera, och jag hittar ingen lösning. När jag söker på XML-RPC och WordPress verkar det mest som folk är arga på detta API och vill ha hjälp att stänga av det, eftersom det ofta utnyttjats för olika former av angrepp. Det tycks också som det är på väg att fasas ut till förmån för ett nyare API som använder sig av standarden REST. Jag provade att göra om skriptet så att det i stället använder sig av detta system.
Detta innebar emellertid nya problem, även om det nya API:et i sig är smidigt. För att autentisera sig är det nödvändigt att använda så kallad Basic Auth, alltså att skicka användarnamn och lösenord i ett HTTP-huvud, eller av det mer komplicerade OAuth. Det första systemet fungerade inte: det verkar som om uppgifterna filtrerades bort, och olika lösningsförslag jag sett har inte hjälpt. OAuth bygger, i alla fall i den version som används av WordPress, på att det externa programmet först får tillåtelse att kommunicera med WordPress och att användaren sedan får logga in via webbsidan. Det är avsett för att en webbtjänst skall kunna nås via webbsidor från tredje part utan att användaren skall behöva ge sina uppgifter till dessa, och det är ohanterligt med skript som inte körs i webbläsaren. Fler än jag har bekymmer med att ingen av metoderna passar (Pöntinen 2015).
Jag kan förstås återgå till att bara generera en HTML-fil via Pandoc och sedan klistra in dess bodyinnehåll i WordPress webbgränssnitt (det är så jag gör med detta inlägg), men det innebär en förlust i smidighet, speciellt om jag vill göra smärre ändringar i inläggen i efterhand. Så nu försöker jag mig i stället på att generera bloggen på min dator med hjälp av Hakyll (Jeugt 2016) – ett program som är gjort för att samarbeta med Pandoc och, i likhet med Pandoc, är utvecklat i Haskell, och som jag tidigare använt för Mortalitetsdiagram. Jag har lagt upp ett utkast till en webbplats innehållande en replik av förra inlägget på denna blogg. Hittills verkar det fungera bra. Den stora nackdelen med system av denna typ är att det inte finns något inbyggt stöd för kommentarer, när allt är lagrat som fasta HTML-filer på webbservern. Därför har jag bäddat in Disqus för att möjliggöra kommentering, även om det vore trevligt att slippa beroende av sådana externa system.
Referenser
Jeugt, Jasper Van der. 2016. ”Hakyll”. https://jaspervdj.be/hakyll/.
MacFarlane, John. 2016. ”About Pandoc”. http://pandoc.org/.
Pöntinen, Viktor. 2015. ”Can’t get auth working, 403 Forbidden Error #21”. https://github.com/WP-API/Basic-Auth/issues/21.