Inläggsformat i WordPress 3.1
publish-format

I skrivandes stund är WordPress 3.1 endast i beta stadiet, men förhoppningen är att den ska gå live som en lite sen julklapp. En av de nya intressanta sakerna som kommer i den nya versionen är inläggsformat (egen översättning från engelskans Post Format), som det här inlägget hade tänkt sätta tänderna i.

Skillnaden mellan Post Format och Custom Post Types

Sedan version, jag tror att det var 2.9 alternativt 3.0 har det funnits någonting som heter Custom Post Types, eller något i stil med ”valbara inläggstyper”. Detta är ett väldigt dåligt val av ord, som Mark Jaquith poängterar i ett inlägg, då det egentligen borde ha hetat någonting i stil med valbara innehållstyper, då dessa syftar på typen av innehåll inte på olika sorters inlägg.

Olika typer av innehåll skulle kunna vara Författare, Meny element eller Produkter, medan olika typer av inlägg skulle kunna vara Galleri, Länk, Chat eller Video.

Varför använda inläggstyper

Anledningen till att vilja sortera sina inlägg i olika grupper kan vara flera, men oftast så vill man att de ska presenteras på olika sätt på framsidan. Ett galleriinlägg vill man kanske ska visa en bild. En länk ska kanske låta titeln vara den externa länken och en aside (likt ett Twitter inlägg) kanske inte ska ha någon titel.

Matt har länge använt sig av detta och på bilden ovan kan vi se ett aside-inlägg (utan titel) och ett galleri-inlägg (med en bild).

Tidigare har det inte funnits någon standard för att lösa detta i WordPress, utan man har fått utnyttja kategorier, och sen beroende på ifall ett inlägg har en viss kategori visa den på ett visst sätt. Och visst det fungerar ju bra, tills du väljer att byta tema, och ingenting längre visas som det ska. Dessutom måste du som temaskapare utbilda användaren av temat om hur personen ska göra för att få saker att visas på vissa sätt.

Ange stöd till dina inläggsformat

Nu har äntligen lösningen kommit, Post Formats.

Man implementerar det lätt i function.php:

add_theme_support( 'post-formats', array( 'aside', 'gallery' ) );

och just like that så finns de att välja under publicerings boxen när du skriver ett inlägg. Temat TwentyTen har självklart blivit uppdaterad med detta redan.

Enligt Codex kan man se att man kan ange stöd för följande inläggstyper:

aside Oftast stylad utan titel. Likt Facebooks uppdateringar.
chat En logg från en chat.
gallery Ett galleri med bilder.
link En länk till en annan sida.
image En ensam bild.
quote Ett citat.
status En kort status uppdatering, oftast på max 140 tecken. Likt Twitters status uppdateringar.
video En ensam video.
audio En ljudfil. Kan användas för Podcasting.

Använd dig av inläggsformaten

När en inläggstyp är satt på ett inlägg händer egentligen inte så mycket per automatik, men du som tema skapare har möjlighet att göra en hel del.

Först och främst dyker formatet nu mera upp som en extra klass med hjälp av funktionen post_class(), som bör vara satt på alla inlägg. Dessa visar i sig i formen format-<typen> så ett inlägg som skulle vara av typen galleri skulle få klassen format-gallery. Dessa kan du sedan använda till att styla med i din css:

.format-link h1{
    color: #900000;
}

Fortsättningsvis finns det en ny funktion som heter get_post_format() som du kan använda för att ta reda på inläggets typ i loopen. Men hjälp av den kunskapen kan du sedan skapa olika utskrifter i loopen beroende på vilken typ av inlägg man har specificerat inlägget som (pseudo-kod):

while( the_loop() ) :
    $format = get_post_format();
    if( $format == 'link' ) :

        //Gör saker om det är en länk
    elseif( $format == 'galleri' ) :
        //Gör saker som ett galleri borde vilja

    else :
        //Annars gör så här (standard)
    endif;
endwhile;

Om ett format inte skulle vara satt, eller om man sätter ett format som inte är giltigt så kommer inlägget automatiskt att få typen ”standard”.

Template filer med hjälp av post_format()

Om man vill stödja alla olika typer av inlägg kan din villkorssats bli väldigt lång, med väldigt mycket liknande kod, vilket kommer göra det rörigt ifall du skulle vilja ändra någonstans. Doglas Gunter hittade på en riktigt bra lösning där man med hjälp av funktionen get_template_part(), som låter dig hämta en fil som börjar med någonting, och slutar med någonting annat, bryta ut de olika typernas kod till separata templatefiler.

Koden ser ut så här:

while( the_loop() ) :

    get_template_part( 'format', get_post_format() );
endwhile;

Det den gör är att hämta innehållet i en fil som börjar med format och slutar med namnet på ditt format. Ett inlägg av typen galleri skulle alltså använda filen format-gallery.php. Fördelarna med det här sättet är att (1) du får mindre kod i din index fil, (2) du får lättöverskådliga templatefiler och (3) det är perfekt för child teman, eftersom ifall format-gallery.php inte kan hittas, så letar den efter samma fil i ett alternativt parent tema, skulle den fortfarande inte hittas, faller den tillbaka på filen format.php, och skulle inte den finnas i barn temat så letar den slutligen efter format.php i förälder temat. Tack vare detta kan man enkelt skriva över en viss templatefil i ett barntema utan att förstöra hur någonting annat ser ut. Och skulle ett temat inte göra någonting speciellt med en viss typ av inlägg, så faller den enkelt tillbaka till standard filen, format.php (den måste dock finnas för att det ska fungera).

Betatesta funktionen

Eftersom funktionen fortfarande bara är i betaversion, så går den inte att använda på din vanliga WordPress installation, men om du ändå vill leka med kontrollerna så kan du alltid följa min guide om hur du blir en beta testare, så är det bara att sätta igång och testa och uppgradera ditt tema så att det är fit for fight när version 3.1 äntligen kommer.


En kommentar till 'Inläggsformat i WordPress 3.1' »»

Lämna en kommentar

XHTML: Du kan använda dessa taggar:
<a href="">, <em>, <strong>, <img src="">,
<pre lang="php">, <code>, <blockquote>