Att använda the_post_thumbnail() i WordPress 2.9

images post1 470x116 Att använda the post thumbnail() i Wordpress 2.9

WordPress släpptes för en stund sedan i version 2.9 och med släppet följde en efterlängtad funktion med för de som utvecklar teman, nämligen the_post_thumbnail(). WordPress Codex är dock ganska sena med en bra Wiki-artikel på ämnet så jag tänkte skriva ihop en liten bas-guide till hur den nya funktionen kan användas.

Vad som inte berättas utan krävdes en del sökande för min del är att funktionen först måste aktiveras från functions.php (filen ligger i samma mapp som ditt tema finns i) för att fungera. Anledningen vad jag gissar på är bakåt-kompatibilitet så att funktionen inte används där det inte stöds.

[code lang="php"]add_theme_support( 'post-thumbnails' );

Lägg in raden i functions.php. Stäng dock inte filen än, vi måste också definiera storleken på miniatyr-bilderna. Detta görs med funktionen set_post_thumbnail_size(). Funktionen tar ett par argument int width, int height, bool hardcrop.

[code lang="php"]set_post_thumbnail_size( 250, 150, true );

Använder mig personligen av raden ovan, här sätts höjd och bredd till 250x150 och hardcrop till sant. Hardcrop är dock för mig ett frågetecken än så länge då det inte verkar göra till eller från det jag har testat. Dess egentligen funktion är att beskära bilden snarare än att förändra storleken på den, vilket ger fler valmöjligheter i fråga om höjd/bredd på bilderna man laddar upp än om vi bara skulle förändra dess storlek.

När du experimenterar med storlekarna så rekommenderas det att du installerar tillägget Regenerate thumbnails så du slipper editera om alla miniatyrer i varje inlägg.

För att hämta din miniatyr så måste du först definiera den i en bloggpost, efter att du sparat functions.php och går in i editorn så märker du en ny ruta som heter Post Thumbnail, definiera din miniatyr i den.

post thumbnail box Att använda the post thumbnail() i Wordpress 2.9

Nu är det dags att hämta bilden i vår loop. Jag rekommenderar att du kontrollerar så att inlägget har en minityr först och främst.

[code lang="php"]if ( has_post_thumbnail() ) { the_post_thumbnail(); }

Nu är det dags att utforska the_post_thumbnail(). Funktionen tar en mindre uppsjö med argument, för det första kan du definiera din miniatyr med ett namn: thumbnail, medium, large där thumbnail är standardvärdet i funktionen.

Exempel:

the_post_thumbnail('medium'); hämtar och skriver ut mediumstorleken av bilden.

Är du inte nöjd med standardvärdet av storleken på bilden eller behöver lägga in en css-klass? Funktionen tar även arrays med olika argument.

Ett exempel är:

[code lang="php"]the_post_thumbnail( array(300, 300), array('class' => 'min-class-ett min-class-tva') );

Som du ser så gör jag om miniatyren till en storlek av 300x300 och ger den två klass-attribut, min-klass-ett och min-klass-tva. Du kan även lägga in andra värden som rel, title, alt med mera för större kontroll.

  • http://www.grafixstudio.se Antonio

    Bra där med css-klass tipset!

  • http://www.andreasjansson.net Andreas Jansson

    Tack för den herr Johanson! Mycket användbart :)

    • http://cynatic.org Andreas

      :)

  • http://roligaflashspel.se Olof

    Riktigt bra tips. Har faktiskt kollat lite på detta men innan har jag bara sparat bildlänken på egna fält och sedan använt den när jag ska visa inläggen med thumb.

    Detta är helt klart smidigare!

    • http://cynatic.org Andreas

      Jo det är det gamla sättet, jag körde så ett tag innan men kände att det var lite för mycket arbete med det för en sådan “självklar” funktion.

  • http://www.kangalid.se Kim

    Haha. Jag har precis kodat en egen funktion för denna funktionalitet… typiskt.. :)

    • http://cynatic.org Andreas

      Illa ;) Enda fördelen med egen kod är den hjälper mot några av de småsaker som jag tycker inte fungerar med the_post_thumbnail ;)

  • http://roligaflashspel.se Olof

    Hej igen! Har nu fixat detta på en av mina bloggar och det var verkligen enkelt. Något som bör nämnas är att man ska lägga phpkoden i temats functions.php. Jag la det i functions.php som ligger på wp-includes. :P

    Nu ska jag bara fixa till htmlkoden så att den kommer på rätt ställe, det brukar dock bli det dryga.

    • http://cynatic.org Andreas

      Hehe givetvis, känns lite väl givet för mig att allt ska ligga i temats functions.php att jag inte tog med det. Ska lägga till en fotnot om det.

  • http://www.grafixstudio.se Antonio

    Tjena Andreas

    Vet du om det går att ha fler inläggsminiatyrer på samma sida?

    Borde väl gå?

    • http://cynatic.org Andreas

      Ja det går, ska inte vara några problem. Har du mer detaljer kring det?

      Enda grejen är väl att det oftast måste hämtas via the_loop.

      • http://www.grafixstudio.se/ Antonio

        Tänkte ge användare möjlighet till två platser att ladda upp bilder på. Typ två små thumbnails under varandra för ett inlägg.

        • http://cynatic.org Andreas Johansson

          Som jag sett det så går det nog bara definiera en thumbnail för ett inlägg. Men det går ju, om än lite osmidigt, att kombinera med den gamla tekniken med custom fields eller att använda timthumb för att extrahera ytterligare en bild från posten. Krävs kanske lite mer kunskap från användarens sida dock.

  • http://wordpressguru.se/ WordPressGuru

    En riktigt bra grej är att man kan lägga till fler tumnagelstorlekar med
    add_image_size( 'single-post-thumbnail', 600, 9999, false );
    och sedan använda den storleken med
    the_post_thumbnail( 'single-post-thumbnail' );

    Har skrivit mer om det här:
    http://www.wordpressguru.se/allt-du-behover-vet…