Hvorfor og hvordan migrere fra WordPress til Hexo
I ca 2 år skrev jeg min tilbakemelding på en god gammel WordPress. WordPress et universelt verktøy, kjent og brukt av alle, enkelt å installere og tillater med en lav investering, for å lage temaer, utvidelser...
Ja, men i dag er det derfor jeg bestemte meg for å forlate WordPress:
- Jeg bruker WordPress til å lage statisk innhold og har derfor ingen reell interesse i å generere en side dynamisk hver gang.
- WordPress er treg og til tross for investeringen min hjelper ingenting, 1 sekund å alltid få frem det samme innholdet er for mye.
- Jeg er en PHP-utvikler, og PHP er et "mal"-språk, men jeg tåler ikke å se blandinger av maler og forretningskode...
- … Derfor tok jeg meg aldri tid til å tilpasse temaet mitt. Jeg brukte det offisielle WordPress-temaet som ble lastet inn, tok ikke opp hele skjermens bredde og formaterte det meste av arbeidet mitt til en kolonne på omtrent 350 piksler...!
Introduksjon
Ja, men hva er ulempene?
Mer generelt genererer statiske generatorer som Hexo eller Jekyll innhold ... statisk og gir derfor ikke rom for innhold som krever behandling som kommentarer. Dette problemet plaget meg i lang tid, og jeg bestemte meg til slutt for Disqus. Før jeg bestemte meg, studerte jeg prosjektene litt, og her er det jeg tok med meg.
- Disqus (eller andre SaaS) desentraliserer innholdet ditt. Kommentarer er ikke din eiendom. Det er en importør og en eksportør. Til tross for dette, ingen vedlikehold hjemme.
- Løsninger som Isso eller Discours lar deg ha et lignende system hjemme, men dette innebærer backup innholdet (problem vi allerede hadde med WordPress), men også for å sikre at SMTP-en din fungerer som den skal (allerede kjent problem)...
- Deportering av kommentarer lar deg også være vert for bloggen din på GitHub for eksempel.
Isso
Isso er et flott alternativ som ligner mye på Disqus, men som mangler noen få detaljer.
- Ingen back-end for å administrere kommentarer.
- I testene mine hadde jeg lest at man kunne moderere kommentarer via en lenke tilgjengelig i en e-post eller i loggene. Jeg har aldri sett disse koblingene, så jeg burde ha gjort noen databasespørringer.
Bortsett fra det var Isso DET ideelle produktet. Jeg er ikke i tvil om at den vil fortsette å vokse, og at jeg snart vil skrive en artikkel for å migrere fra Disqus til denne.
Discourse
Diskurs var det andre alternativet, men jeg har faktisk ikke testet det. Denne tilbyr en betalt versjon og disse tekniske forutsetningene stoppet meg raskt.
Hvorfor Hexo og ikke Jekyll
Svaret er enkelt. Jekyll er Rubin mens Hex er Javascript (node.js). Jeg liker JS-syntaksen, og derfor var det lettere for tilpasse, å forstå, …
Hvordan virker det?
1
2
3
4
|
$ # Installer Hexo
$ npm installer -g hexo-cli
$ # Opprett en blogg
$ hexo init min-blogg && cd min blogg
|
Sånn, prosjektet ditt er klart. Du kan versjonere den.
Hvordan generere innholdet
1
|
$ hexo generere
|
Hvordan se innhold skrevet i Markdown uten å regenerere alt innhold
1
|
$ heksoserver
|
Med denne enkle kommandoen kan du få tilgang til en server node.js som gjengir den til deg i sanntid. Adressen er vanligvis http://localhost:4000.
Hvordan migrere innleggene mine fra WordPress
Hex har implementert mange verktøy for å migrere innholdet ditt. For WordPress er dette veldig enkelt.
1
2
3
|
$ npm installer hexo-migrator-wordpress --save
$ # Gå til WordPress backoffice, og [eksporter blogginnholdet ditt](https://en.support.wordpress.com/export/).
$ hexo migrere wordpress /path/to/file_exported.xml
|
For å migrere innhold trenger du ikke noe mer. Vanskeligheten ligger i å migrere vedlegg (som bildene). I filen kilde/_innlegg du må opprette en mappe med samme navn som artikkelfilen.
Eksempel, for artikkelen tegne-meg-en-sau.md du må opprette en mappe tegne meg en sau.
I disse mappene vil du kopiere bildene fra WordPress. Du må da gå tilbake til artiklene dine og endre kilden. I mitt tilfelle forble de innlastede bildene på den opprinnelige kilden.
eksempler:
1
2
3
4
5
6
7
|
# Før

# ELLER
<img src="https://my-blogg/wp-content/my-image.png" />
# Etter

|
Hvorfor spesifisere mappenavnet i banen til bildet mitt?
Du kan absolutt laste inn bildet på denne måten.
1
|

|
Dette blir fort et problem. På artikkelsiden vil bildet bli lastet fint fordi det er i forhold til gjeldende side, men på din hjemmeside, vil bildet lastes inn i forhold til hjemmesiden, og da vil du se en 404 Not Found.
Konfigurasjonen
For å kopiere bildene må du legge inn denne konfigurasjonen i din _config.yml.
1
2
|
#_config.yml
post_asset_folder: sant
|
Hvordan sette opp omdirigeringer
Hovedproblemet når innholdet er migrert er å ikke miste naturlig referanse. Det handler om krigens sener og jeg kom ganske enkelt rundt problemet.
artikler
I første omgang har artiklene for URL :år/:måned/:dag/:tittel. I WordPress er det vanligvis bare tittelen. Legg inn din _config.yml denne verdien.
1
2
|
#_config.yml
permalink: :tittel/
|
Kategoriene
Med kategoriene er det litt den samme historien. Denne gangen er stien nesten den samme. I WordPress er det det kategori/ og i hekso kategorier/ (som standard). Slik endrer du det.
1
2
|
#_config.yml
kategori_katalog: kategori
|
Tagger
Med tags er det alltid den samme historien. I WordPress er det det stikkord/ og i hekso tagger/ (som standard). Slik endrer du det.
1
2
|
#_config.yml
tag_dir: stikkord
|
arkivene
Dette er den mest tekniske delen og den enkleste på samme tid. I WordPress ligger arkiver i år/måned/ og i hexo er det det arkiv/år/måned/. I mitt tilfelle ønsket jeg ikke å endre banen i hexo og jeg ønsket å beholde denne nye måten å gjøre ting på.
Her er omdirigeringen Nginx å etablere.
1
2
3
4
5
6
7
|
server {
...
sted / {
rewrite ^/(d{4})/(01|02|03|04|05|06|07|08|09|10|11|12)/ /archives/$1/$2/ permanent;
}
}
|
Dette regulære uttrykket er langt fra det mest perfekte, men det blir det redoubtable.
andre
Om vedlegg du må gjøre en liten omdirigering, men i alle fall vil tapet av SEO være mindre skadelig.
Slik gjør du en omdirigering med Nginx.
1
2
3
4
5
6
7
|
server {
...
sted / {
omskriv ^/draw-me-a-sheep/my-picture/$ /draw-me-a-sheep/my-picture.png permanent;
}
}
|
Hva om Google ser en 404-viderekobling?
Ingen grunn til bekymring, med denne tilstanden i Nginx, ikke noe problem. Vi omdirigerer alle 404 vers la hjemmeside.
1
2
3
4
5
6
7
8
9
|
server {
...
error_page 404 @fallback;
plassering @fallback {
omskriv ^/ / permanent;
}
}
|
Overfør kommentarer
via Disqus, her er lenken som lar deg enkelt importere WordPress-kommentarene dine.
Sitemap
Det er et prosjekt for å enkelt generere et nettstedskart med Hexo. Kort sagt, her er hvordan.
1
|
$ npm installer hexo-generator-sitemap --save
|
1
2
3
|
#_config.yml
nettstedskart:
sti: sitemap.xml
|
konklusjonen
Med en liten investering kan du enkelt migrere innholdet ditt. Et lite pass for å sjekke at artiklene er riktig migrert og at det er pakket. I mitt tilfelle har jeg bare 23 omdirigeringsregler for hele nettstedet mitt. Lett?