Ett riktigt irriterande problem i WordPress är att det saknas bra kontroll över tumnagelgenereringen. Det enda som går att styra över är om bilden skall beskäras eller bara ändras storlek på, och då till vilken storlek. WordPress har ett inbyggt tumnagelredigeringsverktyg, men det fungerar inte i de ”skräddarsydda” storlekarna (I skrivande stund är WordPress version 3.05).
Problemet då är att det förvisso går att få WordPress att beskära och generera tumnaglar, men de är alltid centrerade i både X och Y ledd. Mycket irriterande! Ett bra exempel är den här sidan; När en bild laddas upp i portfolion vill man inte att den skall centrera bilden, då detta oftast resulterar i att man får se en massa text. Det man vill visa är hur sidan ser ut från toppen, eftersom det är det första intrycket besökaren stöter på.
Som tur är finns thumbGen. ThumgGen är ett plugin för WordPress ägnat åt utvecklare. Det händer med andra ord inget alls om man bara installerar det, utan är ämnat att fungera bakom kulisserna.
Såhär ser koden ut för pluginet i ’Portfolio’ avdelningen:
<?php if (has_post_thumbnail() ) { // the current post has a thumbnail
$img="";
$image_id = get_post_thumbnail_id();
if ($image_id) {
$img = wp_get_attachment_image_src($image_id,'full-size');
}
if(!empty($img)) { ?>
<a href="<?php $image_id = get_post_thumbnail_id(); $image_url = wp_get_attachment_image_src($image_id,'full-size'); $image_url = $image_url[0]; echo $image_url; ?>" title="<?php if ( get_the_title() ) the_title(); else the_ID(); ?>"><img src="<?php thumbGen($img[0],386,219,"md5=0&halign=center&valign=top"); ?>" alt="<?php if ( get_the_title() ) the_title(); else the_ID(); ?>" /></a>
<?php } ?>
<?php } else { // the current post lacks a thumbnail ?>
<?php } ?>
Här kontrollerar man först om det finns en tumnagel associerad till posten. Om det då finns det, då skapar den en tumnagel som är centrerad i X-ledd, och börjar från toppen i Y-ledd. Denna bild är då länkad till den ”stora” versionen av bilden.
Och ja, den här kodsnutten hoppar rätt friskt fram och tillbaka mellan PHP och HTML. Lättare att göra Copy-paste och använda i andra syften då 😉