Al doilea plugin: Thumbs for Excerpts


După unu vine doi. Dacă am prins curaj cu primul plugin, altPWA, astăzi am publicat un al doilea: Thumbnail for Excerpts. Despre ce e vorba? Un prieten mi-a cerut zilele trecute următorul lucru: listele de articole din WordPress (conţinând nu articolele întregi ci doar părţi – excerpts) să fie însoţite de o imagine din articol. E clar că o listă 100% text e mai banală decât una care conţine şi imagini. Iniţial am fost nedumerit, dar apoi mi-am dat seama că nu este foarte greu de realizat aşa ceva. Primul pas este să interceptăm excerpt-ul (pasajul) articolului şi să îl completăm cu imaginea. Pentru aceasta folosim un filtru.

add_filter("get_the_excerpt",
             "putThumbnailForExcerpts");

Acum mai rămâne doar ca funcţia cu pricina (parametrul al doilea) să găsească imaginea din articol. Procesul ar putea fi descris astfel:

1. se caută dacă în conţinutul articolului apare secvenţa <img. Dacă da, articolul are imagine!
2. în acest caz se caută efectiv imaginea, fişierul, ce apare evident după src=
3. respectivul fişier ar putea să aibă un thumbnail generat; verificăm existenţa lui
4. dacă există thumbnail-ul este afişat el, dacă nu, imaginea din post, dar la o dimensiune limitată (ex: lăţime 100px)

Este un cod extrem de scurt (consultabil aici). El merge excelent pentru cei care publică articole din secţiunea de administrare a WordPress. De ce? Pentru că pentru fiecare imagine publicată de acolo WordPress crează o versiune (thumbnail) pătrată, prin decupare deci dacă e nevoie, de 150 x 150 pixeli. Aceasta se poate modifica de la Setări, Diverse (un mic secret: dacă puneţi 0 acolo, WP nu va mai crea thumbnail-uri). Dacă WordPress crează thumbnail-uri şi le asociază unui articol, atunci nu e mai simplu căutarea directă a thumbnail-urilor, prin funcţii WP, în locul căutării în string propusă mai sus? Ba da… dacă WordPress ar fi stabil la acest capitol.

WP 2.3 numea thumbnail-ul pentru oimagine.jpg cu oimagine.thumbnail.jpg. Începând cu 2.5 thumbnail-ul a devenit oimagine-150×150.jpg. Dar nu aceasta e marea problemă. Adevărata dificultate vine – pe lângă faptul că nu toţi publică din back-end, ci unii folosesc Windows Live Writer, Post2Blog sau alte programe – de la slaba documentare a funcţiilor WP ce lucrează cu thumbnail-uri. În acest moment Codexul WP ne informează despre două funcţii:

– wp_get_attachment_thumb_file
– wp_get_attachment_thumb_url

Cheia de acces, după cum puteţi vedea din codul următor, este get_children, o funcţie de asemenea nedocumentată :) . În astfel de situaţii îţi rămâne să te uiţi chiar în fişierele WordPress, căutând să înţelegi cum funcţionează respectivele funcţii şi cu ce parametri. Uneori ai norocul ca alţii să fi făcut munca de documentare. Într-o discuţie pe forumul WP am găsit următorul cod, incredibil de scurt, care afişează toate thumbnail-urile unui post. Cât de simplu!

$id = $wp_query->post->ID;
$files = get_children("post_parent=$id&post_type=attachment&post_mime_type=image");
if($files){
   $keys = array_keys($files);
   $num=$keys[0];
   $thumb=wp_get_attachment_thumb_url($num);
   echo "<img src=$thumb>";
}

Nu am folosit însă codul în principal din motivul că nu toţi publică din back-end. Poate la un moment dar ar merita o variantă de plugin pentru cei care folosesc 100% back-end-ul WP, sau crearea de thumbnail-uri pentru imaginile care nu au (poate cu funcţi wp_create_thumbnail, apărută în WP 1.2 dar pierdută pe drum – şi totuşi WP are ceva funcţii cu care face thumbnail-ul, trebuie doar să iasă la suprafaţă). Iată mai jos pluginul în acţiune, cu diferite alinieri şi dimensiuni ale thumbanil-ului:

După cum vedeţi, imaginea poate fi afişată în stânga sau în dreapta pasajului din articol. Unde anume precizaţi modificând fişierul PHP: la începutul lui sunt trei constante definite, ce pot fi modificate după plac – alinierea, lăţimea imaginii şi clasa imaginii. Cu clasa imaginii pretenţioşii pot via CSS să facă mai aspectuos thumbnail-ul. Partea bună este că imaginea apare şi în feed, dacă nu aveţi feed integral ci se foloseşte tot excerpt-ul. Mai jos vedeţi o altă demonstraţie: în stânga fără, iar în dreapta cu pluginul activat.

img103 img104

Pluginul ar trebui să fie funcţional pe orice sit WordPress, dar nu va arăta bine peste tot. Depinde de temă şi de imaginile folosite în articole. De exemplu chiar aici, pe CNet.ro, nu îl voi folosi pentru că nu îmi place cum arată pagina. Poate când voi schimba tema. Pe WordPress.org pluginul meu are deja peste 25 de descărcări, ceea ce mă bucură… Se pare că pentru unii e util.


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (2 evaluări, media: 3,50 din 5)
Loading...Loading...

2 comentarii

  1. windfast spune:

    Vezi? Asta e hiba celor avansati. Considera ca toata lumea intelege. Explica te rog frumos (pentru incepatori ca mine) ce si unde „interceptez”? Lucrand in WP. Unde operez? In editare post? In ce? L-am instalat si abia astept sa-l folosesc.
    Cu multumiri!

  2. radu.capan spune:

    Eu am explicat mai sus cum functioneaza pluginul, cum a fost scris (pentru firile tehnice interesate). Cat priveste utilizarea lui, e genul de plugin care il instalezi si uiti de el. Daca tema foloseste the_excerpt si nu the_content (adica in prima pagina si in arhive afiseaza parti de articole nu articolele intregi) pluginul functioneaza imediat dupa activare. Pentru reglari mai fine se poate edita fisierul pluginului, existand cateva optiuni. Pentru detalii (click) aici.


Lasă un răspuns

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