WordPress 2.3: structura bazei de date şi tagurile


După ce a apărut versiunea 2.3 la WordPress am făcut imediat upgrade la câteva situri mai simple. Simple în sensul că nu foloseau pluginuri multe sau complexe, nici nu aveam modificări proprii. Lucrurile au mers uşor. Am lăsat pentru săptămâna trecută upgrade-ul la CNet.ro şi alte câteva situri importante, mari, cu multe pluginuri, inclusiv personale. Lucrurile au decurs mai greu, un upgrade luându-mi între 1-2 ore şi 5-6 ore. Există două surse ale problemelor.

1. (Dacă nu scrieţi pluginuri şi nu cunoaşteţi MySQL, nu are sens să citiţi acest punct.) Modificarea structurilor tabelelor WordPress. Ca înainte, WP are zece tabele. Până acum ele erau: wp_categories, wp_comments, wp_link2cat, wp_links, wp_options, wp_post2cat, wp_postmeta, wp_posts, wp_usermeta, wp_users. Cu text înclinat sunt tabelele care au dispărut. În locul lor au apărut alte trei, indicate corespunzător în lista următoare: wp_comments, wp_links, wp_options, wp_postmeta, wp_posts, wp_term_relationships, wp_term_taxonomy, wp_terms, wp_usermeta, wp_users. După cum constataţi din numele tabelelor, conceptul de categorie (pentru articole şi pentru legături deopotrivă) a fost integrat într-un concept mai abstract: term(en). Abstractizarea este desigur utilă, pentru că gradul mai mare de generalitate va asigura o acoperire mai bună pentru viitoare alte modificări (adăugări de concepte). Pe de altă parte, pentru cei care scriu pluginuri pentru WP această abstractizare complică puţin lucrurile dar este treabă de obişnuinţă.

La fiecare dintre siturile mari pe care le dezvolt cu WP am avut pluginuri proprii, ce manipulau categoriile. A trebuit să îmi fac o diagramă pentru a înţelege corespondenţele, dat fiind că acum numele câmpurilor nu mai sunt deloc sugestive. Să luăm de exemplu tabela wp_term_relationship. Are două câmpuri cu nume seci: object_id şi term_taxonomy_id. Identificatorul unui articol se regăseşte ca object_id, fiindu-i asociate diferite valori în câmpul term_taxonomy_id. Acestea pot indica mai multe lucruri: cel mai des categoria şi, dacă sunt folosite, tagurile. Dacă avem perechile (2,10), (2,11), (2,300) atunci 2 este ID-ul articolului, iar 10, 11 şi 300 le căutăm în wp_terms pentru a afla numele. Dacă vrem să le aflăm semnificaţia (categorie? tag? altceva?) atunci trebuie să căutăm tot prin corespondenţă cu term_id în tabela wp_term_relationships. Este doar un exemplu pentru a vedea cât de complicate sunt acum interogările. Dar, repet, după ce te obişnuieşti lucrurile merg bine.

În august prezentam demonstrativ cum putem scrie un plugin care în feed să indice categoriile. Evident pluginul nu mai este valabil acum, pentru WordPress 2.3 (pentru siturile mele l-am rescris însă). Tot cu titlu demonstrativ voi prezenta vechea interogare şi noua interogare.

"SELECT cat_id,cat_name FROM wp_posts,wp_post2cat,wp_categories WHERE (id=’".$id."’) AND
(id=post_id) AND (category_id=cat_id)"
"SELECT wp_terms.term_id,name FROM wp_posts,wp_term_relationships,wp_term_taxonomy,wp_terms
WHERE (id=’".$id."’) AND (object_id=id) AND
(wp_term_relationships.term_taxonomy_id=wp_term_taxonomy.term_taxonomy_id) AND
(wp_terms.term_id=wp_term_taxonomy.term_id)"

Din păcate mulţi autori de pluginuri nu şi-au actualizat producţiile. Deşi WP 2.3 a fost disponibil mai multe săptămâni încă înainte de lansare şi deşi de la lansare a trecut deja ceva timp, mulţi am rămas cu buzele umflate din motiv de neactualizare a pluginurilor. Din fericire piaţa autorilor de pluginuri este destul de mare, astfel că funcţionalităţile unui plugin abandonat pot fi acoperite de unul nou scris. Dacă la capitolul teme, WordPress are pe internet mai multe directoare bune, la capitolul pluginuri lucrurile stau mai prost. Cele câteva dintre directoarele existente reunesc un număr mic de pluginuri, sute altele "plutind" necunoscute pe net. Recomandarea mea este să căutaţi cu Google folosind ca descriere – în engleză – ceea ce aţi dori de la plugin, adăugând şi "wordpress 2.3 plugin". Astfel de căutări pe net pot lua şi ore, după cum s-a întâmplat şi în cazul meu la upgrade-urile făcute săptămâna trecută.

La unul dintre siturile WordPress foloseam un plugin care ascunde o categorie din căutări, din feed-uri, din arhive… Autorul a abandonat pluginul şi prin WordPress.org am găsit Advanced Category Excluder. Din păcate în cazul meu nu funcţiona perfect. Am găsit că autorul este un maghiar, am schimbat câteva emailuri (evident în engleză 😉 ) într-o jumătate de oră şi în cele din urmă am adoptat o modificare a pluginului lui. Deci o altă recomandare: când aveţi probleme cu un plugin căutaţi să staţi de vorbă cu autorul lui. De regulă cei care scriu un plugin şi îl dau (dăruiesc) comunităţii au şi buna intenţie şi dispoziţia de a ajuta. Din păcate uneori soluţia s-ar putea să cadă tot pe umerii Dvs, să modificaţi personal pluginul (aceasta presupunând că aţi înţeles – măcar în parte – cum funcţionează el).

Şi cu aceasta am încheiat această parte foarte tehnică şi plictisitoare despre modificările de tabele şi efectele lor asupra categoriilor WP. Trecem acum la taguri.

2. A doua modificare majoră adusă de WordPress priveşte tagurile. Nu apar tabele noi din motivele explicate mai sus. Prin introducerea generalului concept de termen WordPress poate exprima şi categorii de articole, şi categorii de linkuri, şi taguri şi probabil şi altceva ce se va mai introduce în viitor. Dar nu ne mai interesează partea cu programarea, ci partea cu tema. Avem WP 2.3 şi o temă mai veche. Cum facem să apară tagurile? Simplu. Folosim funcţia wp_tags. Iată codul exact:

<?php the_tags(’before’, ’separator’, ’after’); ?> 

Dacă cumva sunteţi autori de teme, nu uitaţi să puneţi un if function_exists(the_tags()) pentru că altfel tema va genera erori cu versiuni WP mai vechi. Exemple găsiţi în linkul anterior care trimite pe situl WordPress.org. Linia cu pricina trebuie adăugat în single.php şi eventual în index.php şi/sau archives.php dacă doriţi ca tagurile să apară nu doar la articolele afişate unic. Atenţie: vor fi şi teme la care această simplă adăugare a unei singure linii nu va fi îndeajuns. Ghinion! Va trebui să umblaţi mai adânc la temă sau să o schimbaţi (dar verificaţi: poate autorul temei a scos o versiune compatibilă cu WP 2.3).

Acum să trecem de la teme la funcţionarea tagurilor. Nu uitaţi să umblaţi şi la permalinks dacă doriţi să arate bine URL-urile (poate vreţi să le spuneţi etichete în loc de taguri, sau altcumva – cu permalinkurile Dvs decideţi). În rest partea cu tagurile este implementată extrem de minimalist de către WP 2.3. Într-un fel nu trebuie să ne mire. Tagurile abia au fost introduse, dar să nu credem că echipa dezvoltatoare nu a avut timp să scrie şi facilităţi ceva mai avansate pentru taguri. Nu. Ideea este alta: noutatea numită taguri este lăsată acum liberă spre explorare. Până la 2.4 vor apare diferite pluginuri, comunitatea va reacţiona în diferite moduri, în timp cristalizându-se ce ar fi cu adevărat necesar. Astfel, ulterior WP 2.4 va încorpora nativ acele facilităţi legate de taguri care sunt de interes foarte larg (un exemplu: mult timp doar cu un plugin puteai să indici o pagină ca homepage la un sit WP; ulterior facilitatea a fost încorporată nativ în WP).

Până atunci vă recomand să apelaţi la pluginuri. Două le-am găsit în mod special foarte utile. Unul ar fi Simple Tags. WordPress este la maximul simplităţii acum la capitolul taguri, aşa că de fapt acest plugin nu simplifică nimic, ci vine, într-un mod simplu, cu facilităţi suplimentare şi extrem, extrem, extrem de utile.

img60

  • scrieţi un articol, salvaţi-l (chiar fără publicare) şi sub câmpul de taguri acest plugin va oferi o listă de taguri sugerate (dacă aveţi tag Google şi aţi scris cuvântul Google în articol, evident îl va sugera spre adăugare)
  • la scrierea unui tag oferă opţiunile existente ca autocompletare scutind de tastarea întregului cuvânt
  • se pot adăuga taguri în masă (adică aveţi o pagină cu 20 de articole: titlul lor plus un câmp de adăugat taguri); ar fi fost foarte-foarte utilă o soluţie AJAX care să elimine butonul de salvare (făcând autosalvare) dar poate în versiuni ulterioare
  • permite de asemenea să redenumiţi taguri, să ştergeţi, adăugaţi…

Este un plugin excelent!

Dacă aţi prefera să aveţi sub ochi toate tagurile, atunci vă recomand pluginul scris de Ryan de la Cybernet: Recommended Tags. De exemplu la acest blog, CNet.ro, indică astfel în pagina de scriere de articole:

img61

Fiecare dintre pluginuri face mai mult decât ceea ce am scris eu (de exemplu Simple Tags permite adăugarea de "related articles" în baza tagurilor). Vă invit să urmaţi linkurile date pentru fiecare plugin. Veţi găsi descrieri mai complexe şi mai multe capturi.

* * *

În fine, nu aş încheia aceste rânduri scrise mai mult din experienţa recentelor actualizări decât din teorie, fără să mai fac o observaţie. Unii – nu prea mulţi – nu sunt mulţumiţi de sistemul de notificare adăugat de WP. Scenariile conspiraţioniste nu m-au pasionat niciodată (şi apoi să nu uităm că sursa WP este 100% vizibilă), dar dacă cumva aveţi temeri de securitate iată două pluginuri chiar de pe WordPress.org:

Fără aceste pluginuri va trebui să fiţi mult mai atent dacă au apărut versiuni noi (pt WP sau pentru pluginuri). Şi cu aceasta am încheiat. Brrrrr… Ce articol tehnic.

PS: Tocmai am sesizat că Lorelle a publicat – în engleză – un excelent articol despre taguri. Cât de utile sunt ele? Sau mai degrabă când sunt ele utile? Doar pentru că WP 2.3 a adăugat taguri nu trebuie orice sit să aibă taguri – subscriu!


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (Neevaluat încă)
Loading...Loading...

0 comentarii


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *