Sari la continut
Gabriel Ursan
Blogging

De ce am plecat de pe WordPress după 15 ani

Carte tipărită, curată, lângă un ghem încâlcit de cabluri vechi, pe un birou de lemn

WordPress îmi ținea blogul în 181 de tabele, 26 de pluginuri și un PHP pe care trebuia să-l păzesc zi și noapte. Site-ul pe care îl citești acum e un teanc de fișiere gata făcute, pe care nu prea are ce să se spargă.

Îți spun de la început de unde vin: scriu aici din 2012, lucrez în marketing de peste 15 ani și nu sunt programator. Platforma nouă am construit-o cu ajutorul AI (da, Claude a scris cod, eu am pus întrebările și frânele), pe serverul meu. Nimeni nu mă plătește să laud sau să înjur vreo tehnologie din articolul ăsta.

Mai jos îți arăt de ce am plecat, ce folosesc acum, ce am mutat, cum arată publicarea unui articol în noul sistem și ce am pierdut pe drum. Cu cifre numărate, nu cu impresii.

De ce am plecat, cu cifre, nu cu nervi

Baza de date a blogului ajunsese la 954 MB și 181 de tabele. Din ele, cam 130 erau rămășițe de la pluginuri șterse de mult. Un singur tabel, al unui plugin de newsletter care nu mai există de ani, ocupa 363 MB.

Tradus: mai bine de o treime din baza mea de date era un cadavru.

Recunosc, o parte din mizerie era opera mea. 15 ani de „hai să încerc și pluginul ăsta" se adună. Dar restul e felul în care funcționează WordPress: fiecare plugin lasă urme, fiecare urmă rămâne.

Pagina unui articol îți trimitea 134 KB de HTML, 18 fișiere de JavaScript, 14 fișiere de CSS și contacta 15 domenii externe. Ca să citești text.

Iar la ușă se bătea non-stop. wp-login.php primea încercări de autentificare zilnic, xmlrpc.php la fel. Am văzut pe serverul meu un site care ardea constant 65% dintr-un procesor doar din cereri către xmlrpc.php. Iar la un vârf de trafic, PHP-ul blogului a rămas de două ori fără memorie și site-ul a picat scurt. Atât mi-a trebuit.

Ce folosesc acum

Două piese, ținute la distanță una de alta.

Site-ul public e făcut cu Astro și e static. Gândește-te la WordPress ca la un bucătar care îți gătește pagina de fiecare dată când o ceri: la fiecare vizită, PHP-ul se apucă de treabă. Un site static e o carte deja tipărită: o iei de pe raft și o citești. Nu are ce să dea eroare la tipar când tu ești deja cu ea în mână.

Partea în care scriu e un CMS separat, Payload, cu baza lui PostgreSQL. Stă pe o adresă a lui, în spatele Cloudflare, cu autentificare în doi pași. E biroul meu de scris, cu ușa încuiată. Tu nu treci niciodată prin el.

Totul rulează pe serverul meu, un VPS la Viena, administrat prin Coolify: un fel de administrator de bloc pentru aplicații, care le pornește, le supraveghează și le face rost de certificate. În față, peste tot, Cloudflare.

Am cântărit și varianta „WordPress headless", adică să păstrez WordPress la scris și să servesc site-ul altfel. Am renunțat repede: păstra PHP-ul, cele 181 de tabele, pluginurile și atacurile. Adică exact ce voiam să las în urmă.

Am mutat tot. Chiar tot.

3.476 de articole. 24.863 de comentarii. Peste 11.300 de imagini. 21 de categorii și 989 de etichete. Nicio adresă schimbată.

Textul a fost verificat automat, articol cu articol, literă cu literă. Paritatea a ieșit 100% în medie, iar cel mai „slab" articol a ieșit 99,58%, cu diferențele documentate una câte una.

E ca și cum ai muta o bibliotecă strânsă în 15 ani dintr-o casă în alta și, la final, fiecare carte e pe același raft, deschisă la aceeași pagină.

Am găsit și gunoi, să fie clar: 3 GB de backupuri uitate prin foldere și mii de imagini redimensionate pentru rubrici care nu mai există. Alea nu le-am luat. Mutarea e un bun prilej să nu-ți cari și praful cu tine.

Comentariile vechi rămân publicate, ca arhivă. Un singur articol, unul despre iGO, are 1.375 de comentarii. Alea nu se aruncă: sunt istorie și, sincer, sunt și trafic.

Cum public acum un articol

Apăs Publică în CMS. Un robotel se uită la fiecare 5 minute dacă am publicat ceva nou. Dacă da, duce conținutul în git (registrul contabil al fișierelor, în care nimic nu se schimbă fără urmă) și site-ul se reconstruiește singur. Cronometrat cap la cap: vreo 6 minute, zero comenzi date de mine.

Da, ai citit bine: tot site-ul se reconstruiește. Aproape 6.000 de pagini, în vreo 27 de secunde. Prima oară când am văzut cifra am crezut că e o greșeală.

Ce face AI-ul în CMS (și ce nu-l las să facă)

Am două butoane noi în editor.

„Propune SEO" citește articolul și îmi propune titlul SEO, meta descrierea și câteva întrebări cu răspunsuri, luate strict din ce am scris, nu inventate. Eu văd propunerile într-un panou și aplic doar ce îmi place, câmp cu câmp.

„Generează cu AI" îmi face imaginea de copertă. Coperta articolului ăstuia, de exemplu.

Regula casei e simplă: butonul propune, omul decide. Nicio generare în masă, niciun articol scris de AI pe blogul ăsta. Dacă te interesează cum se scrie în era răspunsurilor generate de AI, am povestit pe larg în articolul despre GEO.

Mai rapid pentru tine, mai discret cu datele tale

Paginile de articol nu mai încarcă niciun JavaScript. Zero. Singura excepție e un script mic de statistici, Umami, găzduit tot la mine.

Umami nu pune cookie-uri și nu te identifică. De aia nu mai vezi banner de cookie-uri pe blog: nu mai are ce să anunțe. La schimb au zburat Google Analytics, Tag Manager și bannerul lor, cam 60 KB de JavaScript la fiecare pagină.

Scorurile Lighthouse au ieșit 100 la toate cele patru capitole, pe șase pagini testate. Spus cinstit: sunt măsurători de laborator, nu de la vizitatori reali. Dar diferența față de vechiul site se vede și cu ochiul liber.

Căutarea e și ea nouă și merge cu și fără diacritice: „bucatarie" și „bucătărie" găsesc același lucru.

Nu poți sparge o ușă care nu există

Pe site-ul public nu mai există wp-login.php, nu mai există xmlrpc.php, nu mai există PHP deloc. Fișiere statice și atât.

Antetele de securitate, care pe vechiul site lipseau cu desăvârșire, acum sunt la locul lor. Iar CMS-ul, singura poartă prin care se poate scrie, stă în spatele Cloudflare, cu autentificare în doi pași.

Backup? În fiecare noapte, automat, criptat, în alt colț de lume decât serverul. Am și restaurat din el, de probă, ca să știu că nu e doar un fișier care îmi ține de cald.

Ce am pierdut pe drum, ca să fim cinstiți

  • Publicarea nu mai e instantanee. De la Publică până pe site trec câteva minute. Pentru un blog cu câteva articole pe săptămână, nu se simte.
  • Comentarii noi nu se mai pot lăsa. Arhiva rămâne publicată, dar conversația s-a mutat: mă găsești pe email și pe formularul de contact.
  • Din zeci de mii de linkuri, 5 s-au pierdut, în 3 articole. Am numărat. Rămâne să le refac de mână.
  • Statisticile pornesc de la zero. Istoria din Google Analytics rămâne la Google, Umami numără de la prima zi a site-ului nou.

Cam atât. Am căutat dramă mai mare și nu am găsit.


WordPress nu e dușmanul. M-a ținut 15 ani și miile de articole de aici pe el s-au scris. Dar un blog e, până la urmă, text pe care îl dai oamenilor, iar tot ce se pune între text și oameni e greutate.

Scrie mai mult. Cară mai puțin.

Întrebări frecvente

Pe ce platformă rulează blogul acum?
Site-ul public e generat static cu Astro, iar scrisul se întâmplă în Payload CMS, cu o bază PostgreSQL. Totul rulează pe un server propriu, administrat prin Coolify, cu Cloudflare în față.

S-a pierdut ceva la migrarea de pe WordPress?
Articolele, comentariile, imaginile, categoriile și etichetele s-au mutat integral, cu adresele neschimbate și textul verificat automat, articol cu articol. Singurele pierderi reale: 5 linkuri vechi din 3 articole, care se refac de mână.

De ce nu mai are blogul banner de cookie-uri?
Statisticile sunt făcute cu Umami, găzduit pe serverul meu. Umami nu folosește cookie-uri și nu identifică vizitatorii, deci nu există nimic de consimțit.

Mai pot lăsa comentarii pe blog?
Nu. Comentariile vechi rămân publicate ca arhivă, dar comentarii noi nu se mai pot adăuga. Mă găsești pe email sau prin formularul de contact.

Scrie inteligența artificială articolele de pe blog?
Nu. AI-ul din CMS doar propune: titluri SEO, meta descrieri, întrebări frecvente extrase strict din articol și imagini de copertă. Ce apare pe site decide și aprobă un om.

Primesti articolele pe email

Scriu cand am ce spune, nu dupa un calendar. Fara reclame, fara vandut adresa nimanui. Te dezabonezi dintr-un clic, din orice email.

Primesti intai un email de confirmare. Pana nu apesi pe legatura din el, nu esti abonat si nu iti trimit nimic. Detalii in politica de confidentialitate.

Comentarii

Lasă un comentariu

Încă nu sunt comentarii aici. Fii primul: spune-mi ce părere ai.

Comentariul apare după ce îl aprob. Emailul nu se publică niciodată și nu intră pe nicio listă. Detalii: politica de comentariiși politica de confidențialitate.