I den første delen av denne serien diskuterte jeg hvilke innleggformater som er og hvorfor du burde bruke dem. Nå er det på tide å lære å bruke innleggformater for å kontrollere hovedløkken i temaet ditt for å vise hver type post riktig.
Før du kan bruke innleggformater i et tema må du registrere støtte for dem. Hver posttype, innebygd (det vil si innlegg og sider) eller egendefinerte innleggstyper, må ha støtte for posttyper som er registrert separat.
For innlegg du bruker funksjon add_theme_support ()
som en del av temaoppsettet i functions.php
, som dette:
add_action ('after_setup_theme', 'slug_post_formats'); funksjon slug_post_formats () add_theme_support ('postformater', array ('til side', 'bilde', 'video', 'lyd', 'sitat', 'lenke', 'galleri'));
For andre innleggstyper, inkludert sider og egendefinerte innleggstyper, vil du bruke legge til post_type_support ()
. Hvis du vil at sider skal støtte de samme innleggformatene som innlegg, vil du bare fortelle WordPress at du vil at den skal like dette:
add_post_type_support ('side', 'postformater');
Du kan bruke lignende kode for å legge til støtte for egendefinerte innleggstyper, eller du legger til "postformater" til "støtter" -argumentet i register_post_type ()
når du oppretter posttypen.
I den forrige delen ble koden jeg viste deg lagt til støtte til andre innleggstyper de samme innleggformatene som var aktivert for innlegg. Hvis du vil at egendefinert innleggstype skal støtte forskjellige innleggformater, er det mulig å bruke add_post_type_support ()
ved å bare sende en rekke postformater til den.
Hvis du for eksempel vil legge til støtte for gallerier og bilder på sider, kan du gjøre dette ved å legge til video i en egendefinert innleggstype kalt "produkter" og alle innleggsformater til innlegg.
add_action ('after_setup_theme', 'slug_post_formats'); funksjon slug_post_formats () add_theme_support ('postformater', array ('til side', 'bilde', 'video', 'lyd', 'sitat', 'lenke', 'galleri')); add_post_type_support ('sider', 'postformater', array ('galleri', 'bilde')); add_post_type_support ('produkter', 'postformater', array ('video'));
Nå som temaet ditt støtter innleggformater, er det på tide å lære å bruke dem.
Hva som gjør innleggformat kult er at vi kan ha en hovedsløyfe med vårt forskjellige oppslag for hvert innleggformat i separate filer. Denne funksjonaliteten er takket være to funksjoner, hvorav den første du bør gjøre deg kjent med er get_template_part ()
.
Mens det bruker kreve ()
, hvis du sporer tilbake langt nok i kildekoden, get_template_part ()
gir oss en mer fleksibel og mer tilgivende måte å inkludere malfiler i andre maler som vi ikke får med kreve ()
. Jeg sier tilgivende fordi, i motsetning til kreve ()
, get_template_part ()
kan fungere med filbaner som ikke eksisterer.
For eksempel, get_template_part ('content', 'foo');
vil forsøke å laste filen innholds foo.php
, men hvis den ikke eksisterer, forsøker du å laste content.php
i stedet. I motsetning, krever ('content-foo.php');
vil returnere en feil hvis innholds foo.php
eksisterer ikke, uansett content.php
eksisterer eller ikke.
Husk at get_template_part ()
er skreddersydd for denne spesifikke bruken som den laster filer i forhold til det aktuelle temaets rot. Som et resultat trenger du ikke å bruke get_template_directory_uri ()
eller lignende funksjoner som spesifiserer banen. Du kan fortsatt bruke den til å laste filer i underkataloger av temaets hovedkatalog ved å spesifisere banen i forhold til temaets rot i det første argumentet. For eksempel, for å laste innholds main.php
fra en underkatalog kalt "deler" du vil bruke get_template_part ('parts / content', 'main');
.
Den andre funksjonen som gjør dette alt mulig er get_post_format ()
, som returnerer postformatet for nåværende innlegg i løkken. Selv om den har mange bruksområder, er denne funksjonen hovedbruk som et argument for get_template_part ()
. Det er det som gjør at vi kan inkludere innholdsdeler som er spesifikke for et innleggformat som vi vil se i neste avsnitt.
På grunn av fleksibiliteten til get_post_format ()
diskutert i den siste delen, er vi i stand til å bruke get_post_format ()
som en av sine argumenter, selv om det ikke er en innholdsdel i temaet for alle postformatene som er i bruk.
Nå som du forstår de to funksjonene som gir postformat bestemte innholdsdeler mulig, la oss sette alt sammen.
Ta en titt på hovedløkken fra tjuefire:
Som du kan se er dette en veldig enkel sløyfe. Den faktiske merkingen for innleggene er inneholdt i de enkelte innholdsdelene. På grunn av den tilgivende naturen av get_template_part ()
Hvis en innholdsdel for et bestemt innleggsformat ikke eksisterer, vil WordPress falle tilbake til content.php
. Det betyr at hvis det nåværende innlegget har formatet "video", vil WordPress først prøve å laste innholds video.php
, og hvis det ikke er funnet, vil det falle tilbake til content.php
.
Som jeg sa tidligere, get_template_part ()
er barn tema oppmerksom på. Det betyr at WordPress først vil se etter en fil i barnetemaets mappe før foreldetemaet, hvis et barnemne er i bruk.
Som et resultat er det en god praksis å bruke get_template_part ('content', get_post_format ());
å inkludere hovedløkken på siden din, selv om temaet ditt ikke støtter innleggformater. På den måten kan et barntema deklarere støtte for et innleggformat, og legge til egne innholdsdeler for postformatene som støttes.
Nå som du vet hvordan du legger til støtte for temaet ditt for innleggformater og for å angi forskjellige malte deler basert på innleggformatet, er det på tide å begynne å tenke på hvordan du skal bruke dem i temaet ditt. Jeg vil dekke hvordan du gjør det i resten av denne serien. Pass på at du også sjekker ut koden av temaer, som tjuefire, som implementerer innleggformater godt for å få inspirasjon.