Gör en egen WordPress-funktion för egna fält
När man använder egna fält för att skriva ut information i ett tema kräver varje fält att man upprepar ganska mycket kod. Eftersom jag själv använder ganska många egna fält när jag utvecklar mer avancerade teman för kunder slog det mig att det var mycket mer effektivt att bara skapa en enkel funktion som jag kan kalla så fort jag vill skriva värdet av ett eget fält eller använda värdet i en if-sats.
Först och främst: Standardkoden
Detta är den bit kod som används för att ladda in ett eget fält i en variabel för att kunna använda.
<?php $custom_field = get_post_meta($post->ID, 'custom-field-key', true); ?>
Kodbiten består av funktionen get_post_meta som i sig består av inläggets ID och nyckeln för det egna fältet. Denna kod behövs dupliceras en gång för varje fält man vill ta in och använder man många fält kommer det snabbt bli rörigt i temafilerna. Jag ville alltså stoppa undan detta i en annan fil, helst.
Fram träder en mycket enkel funktion: print_custom_field();
Egentligen är det bara två delar av koden ovan som ändrar sig för varje fält. Nyckeln samt namnet på variabeln. Genom att sätta variabelnamnet till samma namn som nyckeln går att att skapa en enkel funktion utan något krångligt syntax:
<?php
function print_custom_field($custom_field) {
global $post;
$custom_field = get_post_meta($post->ID, $custom_field, true);
echo $custom_field;
}
?>
Funktionen print_custom_field(); som jag valt och kalla den (för att dess slutsteg är att skriva ut värdet) byggs i princip bara upp av standardkoden. För att funktionen skall kunna ha värdena från inlägget tillgängligt måste $post klassen inkluderas först, därav global $posts;.
Denna funktion läggs på valfritt ställe i functions.php som ju anropas automatiskt för varje temafil som laddas. Viktigt att notera är att funktionen inte bör ha samma namn som en inbyggd WordPress funktion.
För att kalla funktionen i en tema-fil, där du vill skriva ut värdet av ett eget fält använder du denna kod och byter ut author-information mot nyckeln på ditt fält.
<?php print_custom_field('author-information'); ?>
En variation för If-satser: get_custom_field();
En liten annan variation på funktionen behövs för att kunna använda den i konditionalsatser (If-satser). Eftersom det räcker att bara spara värdet i en variabel, modifierar jag funktionen aningen:
<?php
function get_custom_field($custom_field) {
global $post;
$custom_field = get_post_meta($post->ID, $custom_field, true);
}
?>
Som du kan se så är “echo” biten borttagen vilket gör att funktionen (som fått ett annat bra namn) kan användas för att kolla om det finns ett värde i ett visst fält. Detta gör man såhär:
<?php
if(get_custom_field('application') == "Photoshop") :
echo "Do Stuff!";
else :
echo "Do Other Stuff!";
endif;
?>
Sammanfattning
Att skriva en egen funktion för egna fält är en snabb lösning på bristen av bra stöd för detta i WordPress från början. Det är också ett bra exempel på att det går att utvidga temaskrivande med egna funktioner när man behöver dem, utan att funktionerna i sig är så komplicerade. Viktigast här är att det sparar både tid när man kodar och utrymme i filerna.