I den här guiden ska jag gå igenom vad Egna fält, eller Custom fields, är för någonting och vad man kan använda det till. Egna fält är en sådan funktion i WordPress som går att använda till 100-tals olika saker och det är hela finessen med det. Pluginet All In One SEO använder det t ex. för att spara en beskrivning och nyckelord för att sedan skriva ut dem som META-taggar på inläggen medan designskolan.net har det till ingress och thumbnail till inläggen.
Vad är ett eget fält?
Under inlägget hittar du en ruta med titeln egna fält. Du kan där fylla i ett namn och ett värde på ditt fält.

Fördelen med Egna fält
Den stora fördelen med egna fält är att du kan dela upp informationen/inlägget i olika delar och endast hämta de där de behövs. Ett bra exempel kan vara en faktaruta. Finns det en faktaruta till inlägget hämtas den och skrivs ut där du vill ha den, men finns den inte så kommer den inte att skrivas ut.
Jag har själv valt att dela upp mina inlägg i tre delar: inlägget, tumnageln och ingressen. Detta gör att ifall jag får för mig att göra om designen har jag inte en massa inlägg jag måste formatera om för att få det snyggt. Mer om hur man gör detta nu!
Dela upp inlägget och ingressen
För att visa hur detta fungerar ska jag visa hur man gör för att dela upp inlägget genom att lägga ingressen i ett eget fält.
Lägg till fältet
Gå ner till Egna fält och sätt namnet till ingress och fyll värdet med valfri text. Klicka på lägg till fält. Nu blinkar det till, och så är det klart!
Ändra i din template
Nu kommer vi till det finurliga. Det är ett par rader du måste lägga till där du vill ha ditt fält. Vi ska såklart lägga till ingressen över själva inlägget i single.php
Leta upp raden:
<?php while (have_posts()) : the_post(); ?>
Och skriv följande under den:
<?php $ingress = get_post_meta($post->ID, 'ingress', $single = true); ?>
Det vi har gjort nu är att hämta informationen från ingress, dvs. den text du skrev, och lagt in den i en php-variabel vid namn $ingress.
Skriv ut din ingress
För att sedan skriva ut ingressen före inlägget(the_content()) gör du följande:
// En if-sats ser till att $ingress endast skrivs ut du fyllt i en ingress!
<?php if($ingress !== '') { echo $ingress }; ?>
<?php the_content('more...); ?>
Förenklar designbyten
Istället för att ha ingressen och kanske en thumbnail inbakat i inlägget är det som sagt en storfördel att ha dem för sig själva. Eftersom du nu har en liten, oformaterad textbit kan du lägga in den där du behagar. Samma sak kan du göra med en bild. Skapa ett eget fält med namnet thumbnail och som värde sätter du sökvägen till bilden. Exempelvis kan det se ut såhär:
// Hämtar dina egna fält
<?php $ingress = get_post_meta($post->ID, 'ingress', $single = true); ?>
<?php $thumbnail = get_post_meta($post->ID, 'thumbnail', $single = true); ?>
// Skriver ut din bild i en div
<div class="bild"><img src="<? echo $thumbnail ?>" </p></div>
// Skriver ut ingressen innanför en div och en paragraf
<div class="ingress"><p><?php echo $ingress ?></p></div>
// Själva inlägget
<?php the_content('more...'); ?>
Integrera med alla andra WP-funktioner
Om du tänker efter finns det väldigt mycket du kan göra med tanke på alla olika funktioner som WordPress tillhandahåller. Om du har, som jag, en thumbnail till varje inlägg är det väldigt enkelt att länka bilden till inläggen och ge dem samma title som inläggen. Detta görs alltså på automatik och det enda jag behöver göra är att fylla i bildens sökväg i ett eget fält.
Egna fält i själva inlägget
Vill du t ex. ha en faktaruta i själva inlägget måste du ladda ner en plugin som låter dig köra php i inläggen. För detta finns Exec-PHP.
Tweets!


Wow! Äntligen fattar jag vitsen med och hur Custom Field kan användas!
Tusen tack!
Det var så lite så! Det är en väldigt underskattad och okänd funktion som, trots det, är otroligt användbar. :)
Custom Fields är ju hela grejen med WP. Kanske inte, men som Filip skriver är dem väldigt användbara.
Hittade precis ett kodfel i exemplet ovan. p> saknar ett inledande <
Tack! Det är fixat nu!
Det här skall jag definitivt kolla vidare på, det verkar användbart.
Men jag vill gärna se fler exempel, ok, jag kan dela upp inlägg och lägg in en bild .. men mer?!
Inspirera mig ..
Att du kan ”lägga in en bild” är en del av att du kan dela upp inlägget. I och med att du kan dela upp inlägget kan du få det att se ut på massor av olika vis beroende på vad det är du ska ha inlägget till. Arkiv, Toplista m.m.
Eftersom det är det man har custom fields till så är det svårt att ge fler exempel, i mina ögon är det ovärdeligt eftersom det underlättar extremt när man vill ha ett speciellt(eller flera) upplägg, bara det borde räcka som inspiration.
Jag har vågat mig på att göra ett eget fält ”Costume fields”. Jag har gjort mitt bästa för att följa en beskrivning som finns här http://www.designskolan.net/egna-falt-i-wordpress/ Jag har lagt till en content-rad, trodde att man skulle det, så nu har jag två, den understa är den ursprungliga…är det det som är fel? Vilken ska bort? När jag försöker publicera ett inlägg inklusive använda ett eget fält så kommer följande felmeddelande upp:
Parse error: parse error in C:\Xampp\htdocs\bokkafe\wordpress\wp-content\themes\delight\single.php on line 10
Fråga nr 2 är om jag vill ha en costumefieldrad till, var ska den läggas??
Bifogar innehållet i min fil från single.php och hoppas att du upptäcker vad som är galet…Glömde säga att jag vill lägga till fältet efter mitt inlägg och inte som ingress.
ID, ‘Idag fick Rut på bokcafét besök av’, $single = true); ?>
<div class=”box-left” id=”post-”>
<a href=”" rel=”bookmark” title=”">
|
<?php the_tags(‘Etiketter: ‘, ‘, ‘, ”); ?>
Kunde inte hittas!
Beklagar, inga poster matchade dina kriterier.
Tack på på förhand från ett blåbär…
All php kom inte med ovan,, här kommer den, kanske ;)
ID, ‘Idag fick Rut på bokcafét besök av’, $single = true); ?>
<div class=”box-left” id=”post-”>
<a href=”" rel=”bookmark” title=”">
|
<?php the_tags(‘Etiketter: ‘, ‘, ‘, ”); ?>
Kunde inte hittas!
Beklagar, inga poster matchade dina kriterier.
Du kan lägga till ett eget fält nedanför inlägget genom att skriva
if($namn !== ”) { echo $namn };
där du vill ha det, dvs, under content.
Du ska absolut inte ha mer än en the_content, eftersom då kommer du skriva ut inlägget två ggr.
Hallå Filip
Nu har jag funderat på det här ett tag. Det här med egna fält i just det här fallet (ingress och liknande) är ju nästan samma som more-taggen, som delar av inlägg och lägger en länk till hela inlägget.
Jag står lite i valet och kvalet vilket jag skall använda, det lutar mer åt det här sättet, eftersom jag dessutom kan plocka in en bild som thumbnail ..
Jag kan säkert annars skapa ett eget fält för thumbnail, och andå använda mor-taggen? (Enligt modellen, en bit i taget).
Din rekommendation?
Skillnaden om du använder more-taggen är somsagt att inlägget blir mindre dynamiskt. Tänk om du vill ha ett arkiv med bara bild eller bara ingress? Det går inte med more-taggen.
Jag skulle köra med egna fält, 10/10 ggr!
Får detta i min single.php:
Parse error: syntax error, unexpected ‘}’, expecting ‘,’ or ‘;’ in /hsphere/local/home/larskarlsson/tillgangligwebb.se/wp-content/themes/Kolorful-Widgeto/single.php on line 35
Please advice…
Hej Filip
Jag har inte kommit vidare med min fråga enligt ovan. Kan du hjälpa mig vidare?
Du har ett } för mycket på rad 35 i single.php, enligt error-meddelandet iallfall.
Hej Filip
Jag använder den kod du angett här i artikeln, dum fråga, är du säker på att den är helt 100% korrekt?
Eftersom exemplet inte innehållet några } så kan det inte vara skriptet det är fel på. Kan du inte skriva rad 35 här så kan jag kolla…
Hej Filip
Men, du har ju skrivit den här kodsnutten här ovan?
Måsvingarna är ju där, skall det vara något annat, eller visas det fel för mig bara?
Eftersom jag inte vet vad det står på din rad 35 så kan jag omöjligt säga om det är skriptet eller inte som det är fel på.
Error-meddelandet säger att du har en måsvinge för mycket, eller för lite. Eller helt enkelt på fel ställe.
Testar att som du bad mig klistra in koden (dock i annan mall)
// något med ingressen
ID, ‘ingress’, $single = true); ?>
|
// En if-sats ser till att $ingress endast skrivs ut du fyllt i en ingress!
<?php the_content(‘Read the rest of this entry »’); ?>
<?php link_pages(‘Pages: ‘, ”, ‘number’); ?>
Uh oh.
You better never see this text.
Sorry, no posts matched your criteria. Wanna search instead?