Komme i gang med avanserte egendefinerte felt

I denne opplæringen skal jeg vise deg grunnleggende om å bruke pluginet Advanced Custom Fields (ACF). ACF er en ganske stor plugin, så denne artikkelen vil ikke forklare absolutt alt det tilbyr, men det bør være nok til å komme i gang med å legge til dine egne metadata og vise det innenfor temaet ditt. 

Ved skriving er det to versjoner av ACF: 4 og 5. Denne artikkelen er basert på versjon 4, men bør også gjelde hvis du bruker versjon 5.

Hva er avanserte egendefinerte felt?

Avanserte egendefinerte felt er et brukergrensesnitt for å legge til egendefinerte felt eller metadata til WordPress. Egendefinerte felt lar deg forlenge dine innlegg eller sider med flere data. La oss se på et vanlig scenario:

Du har en posttype som heter film og du vil legge ved en score på ti til bunnen av hver av dine anmeldelser, sammen med andre data. Nå kan du bare sette disse dataene i innlegget ditt, men hva om du senere vil bruke disse dataene på en annen måte? Kanskje du vil flytte poenget over anmeldelsen din; i dette tilfellet må du manuelt redigere hver anmeldelse og manuelt flytte denne poengsummen, ikke bra.

WordPress har innebygde funksjoner for å lage egendefinerte felt, men de inneholder bare grunnleggende funksjonalitet og krever at felt skal opprettes programatisk. ACF har mange innebygde felttyper, hvorav noen inkluderer:

  • tekst
  • e-post
  • WYSIWYG editor
  • bilde
  • fil
  • velg boks
  • Datovelger
  • fargevelger

I tillegg til å ha innebygde felt, gir ACF deg et utvalg av regler som kan brukes til å bestemme hvor felt vises i WordPress admin. Dette er veldig nyttig for å holde adminområdet ditt så rent som mulig. For eksempel kan du bare vise en gruppe egendefinerte felt hvis posttypen din er anmeldelser og sidemalen din er kjennetegnet gjennomgang.

Starter

Før vi begynner å legge til noen felt, må du installere ACF-plugin. For å gjøre det, gå fra WordPress dashbord til Plugins> Legg til nytt. Fra Legg til plugin skjerm, søk etter Avanserte egendefinerte felt og klikk Installere. Pass på å aktivere plugin-hvis den er installert riktig, så bør du nå se en Egendefinerte felt menyen i WordPress admin.

Stikker med temaet for en film gjennomgang nettsted, vi skal lage noen relevante felt. For å følge med denne opplæringen, trenger du en egendefinert posttype som heter film. For å lære å lage posttyper, gå over til denne andre flotte Tuts + artikkelen. Når det er sagt, vil metodene som vises her, fungere for mange andre typer tilpasset felt, og logikken for å lage og vise felt vil forbli den samme.

Opprette feltgrupper

Feltgrupper er akkurat det de sier: grupper av felt. Brukes eksempelet på å ha en posttype kalt film, Vi vil kanskje inkludere følgende data:

  • år for utgivelse
  • regissør
  • rating ut av ti
  • IMDb-lenke

Disse feltene tilhører logisk en gruppe, da de alle er relatert til samme posttype. Ved å bruke feltene ovenfor kan vi begynne å tenke på hvilke felttyper vi kanskje trenger for disse dataene.

  • utgivelsesår: Nummer
  • regissør: tekst
  • rating ut av ti: Nummer
  • IMDb-lenke: tekst (det er ikke en URL-felttype)

For å begynne å legge til en feltgruppe, klikk på Egendefinerte felt menyen i WordPress dashboard. Klikk nå på Legg til ny knapp. Du vil nå bli presentert med Legg til ny feltgruppe skjerm. Før vi gjør noe annet, la oss gi vår feltgruppe et navn ved å skrive inn tittelboksen-jeg har kalt min Filmdata.

Deretter kan vi legge til alle våre felt. Klikk på Legg til felt knappen for å komme i gang. Du vil nå se et skjema som har følgende felt:

  • Feltetikett er navnet som vises når du redigerer. Jeg finner det nyttig å starte med det samme prefikset på hvert av feltene mine, f.eks. Filmår, Film direktør, etc.
  • Feltnavn er navnet du vil bruke i koden din for å vise feltet. Etter at du har skrevet inn feltetiketten, bør dette automatisk fylles ut. Dette er et enkelt ord uten mellomrom, men bindestreker og bindestreker er tillatt. For eksempel, Filmår som et feltetikett ville bli til movie_year som et feltnavn.
  • Feltype er et grunnleggende tekstfelt (selv om ACF tilbyr mer avanserte alternativer også).
  • Feltinstruksjoner er instruksjoner som forfattere kan se når du legger til dataene på redigeringsskjermen, f.eks. "Filmåret skal alltid være USAs utgivelsesdato".
  •  er en radioboks hvor du velger ja eller nei. Å velge "ja" betyr at feltet må fylles ut for å lagre på postredigeringsskjermen.
  • Standardverdi er verdien som automatisk vises når du oppretter et nytt innlegg.
  • Plassholdertekst vises innenfor inntastingen på redigeringsskjermen.
  • Prepend definererHva vises før innspillet på redigeringsskjermen.
  • Tilføy Definerer hva som vises etter innspillingen på redigeringsskjermen.
  • formatering girdu to valg: "Konverter HTML til tags" (standard) eller "ingen formatering". Konverter HTML til tags betyr at noen HTML i innspillet blir gjengitt på skjermen; ingen formatering betyr at noen HTML vil bli ignorert.
  • Tegngrense tillater oss å begrense antall tegn for en inngang. For eksempel på vår år input vi burde begrense tegnene til fire.
  • Betinget logikk er en mer avansert funksjon som vi ikke vil se på i denne artikkelen.

Disse feltene vises alle for tekst felttype - på noen andre felttyper, kan noen av disse alternativene ikke vises, eller det kan være noen ekstra alternativer. Som vi også skal bruke Nummer Feltype, det er noen ekstra alternativer tilgjengelig for oss:

  • Minimum Verdi er minimumsnummerverdien som skal tillates i feltet. For våre poeng ut av ti felt ville det være rimelig å sette dette til en, da vi ikke skal score noe som null.
  • Maksimal verdi er den maksimale tallverdien som skal tillates i feltet. Igjen kan vi bruke dette til våre poeng ut av ti felt og ha verdien som ti, da vi ikke vil at denne verdien overskrides.
  • Trinnstørrelse Definerer verdien som et tall øker når en pil trykkes. I tilfelle av filmscore, ville det være en god ide å sette dette som en.

Slik setter jeg opp feltene mine:

  • Feltetikett: Filmår
  • Feltnavn: movie_year
  • Feltype: Nummer
  • nødvendig: Ja
  • Minimum Verdi: 1900
  • Maksimum verdi: 2050

Legg merke til minimums- og maksimumverdiene her - jeg angir disse for å legge til noen svært grunnleggende validering, da det er usannsynlig at vi vil ha en film eldre enn 1900 og en nyere enn 2050 i nettstedets levetid.

  • Feltetikett: Film direktør
  • Feltnavn: film direktør
  • Feltype: Tekst
  • nødvendig: Ja
  • formatering: Ingen formatering

Siden vi skal formatere vår produksjon i HTML, ønsker vi ikke at redaktører skal kunne legge til HTML her som kan forstyrre vårt layout. Derfor ble "ingen formatering" valgt her.

  • Feltetikett: Movie Score
  • Feltnavn: movie_score
  • Feltype: Nummer
  • nødvendig: Ja
  • Minimum Verdi: 1
  • Maksimum verdi: 10
  • Trinnstørrelse: 1

Igjen, vi har et minimum og en maksimumsverdi satt her for å legge til noen validering; Våre poeng er ut av ti, så vi ønsker ikke at redaktører skal kunne sette inn en høyere score enn dette. På samme måte ønsker vi ikke å sette inn noen score som er lavere enn en.

  • Feltetikett: Film IMDb Link
  • Feltnavn: movie_imdb_link
  • Feltype: Tekst
  • Feltinstruksjoner: Lim inn den komplette IMDb-URLen her. f.eks http://www.imdb.com/title/tt2015381/
  • nødvendig: Ja
  • formatering: Ingen formatering

Jeg har lagt til noen feltinstruksjoner til denne inngangen, fordi det ikke er noe URL Feltype, så det er vanskelig å validere. Instruksjonene skal gjøre det lettere for redaktører å forstå hvordan man bruker feltet.

Når du har lagt til alle feltene dine, må du klikke på Oppdater knapp. Når du har klikket på dette, vil du være tilbake på Rediger feltgruppe side. Det er bare noen få flere ting vi må gjøre på denne skjermen for å få feltene dine til å fungere riktig.


Under feltet området er en boks kalt plassering-Dette tillater oss å kontrollere hvor våre tilpassede felt vises. Vi vil bare ha våre egendefinerte felt for å vise om posttypen er film. I den første rullegardinmenyen, velg Post Type, i den andre rullegardinmenyen velg er lik, og i den tredje velg film.

Det siste vi må gjøre her er satt der vårt tilpassede felt vil vises på redigeringsskjermen. For å gjøre dette, bla ned litt lenger til alternativer seksjon. Dette gjør det mulig for oss å velge hvor tilpasset feltmetaboks skal vises og hvilken type det er, og det gir oss muligheten til å skjule andre ting fra redigeringsskjermen.

Alternativene er som følger:

  • Best.nr: Hvis du har flere feltgrupper, blir de opprettet i rekkefølge fra laveste til høyeste.
  • Stilling har tre alternativer:
    • Side
    • Høy (etter tittel)
    • Normal (etter innhold)
  • Stil: Standard eller sømløs (se bildet nedenfor for forskjellen mellom disse).
  • Skjul på skjermen: Dette er en liste over avmerkingsbokser som lar deg gjemme ting du kanskje ikke trenger, for eksempel koder, kategorier eller kommentarer.

Alternativene jeg brukte er:

  • Stilling: Side
  • Stil: Normal

Resten ble etterlatt som standard.

Du kan kontrollere at feltene dine vises riktig ved å lage et nytt innlegg (i dette tilfellet i film posttype). Hvis alt har fungert bra så vil du se metaboxen din. Nå er det en god tid å legge til noen testdata.

Legge til felt til temaet ditt

Nå som du har opprettet dine feltgrupper og har noen testdata, kan du begynne å vise dataene i temaet eller barnet ditt.

Du kan bruke standard WordPress get_post_meta () Fungerer med ACF, men det anbefales at du bruker ACFs egne funksjoner, da ACF formaterer verdiene avhengig av hvilken feltype du har opprettet. Vi skal bruke ACFs feltet() funksjon. Denne funksjonen viser ditt eget felt og tar en parameter av feltnavnet, for eksempel:

La oss takle våre metadata. Vi skal ha all denne informasjonen i en enkelt div.

  • :
  • :
  • : / 10
  • "target =" _ blank ">

Denne koden er ganske enkel - vi bruker _E fungere for å internasjonalisere strenger og ekko dem, og deretter bruke ACF feltet() metode for å ekko verdien av feltet vi opprettet. Alt dette har blitt satt inn i en uordnet liste, inne i a div element med en klasse av anmeldelser-meta, så vi kan målrette den med vårt CSS.

Så hvor går denne koden? I dette tilfellet er det best å lage en ny mal for posttypen din. For å gjøre dette, ta en kopi av temaet ditt single.php fil og navn den single-postname.php-i vårt tilfelle single-movie.php. Hver single.php vil se annerledes ut, men de burde alle ha en ting til felles: en WordPress-loop. Din WordPress-løkke bør se slik ut:

  

Dine egendefinerte felt kan gå utenfor løkken, og akkurat der du plasserer dem, avhenger av hvordan du vil at siden skal se ut. I mitt tilfelle (ved å bruke standard Twenty Fourteen-temaet), har jeg satt dem like under løkken og brukt noen grunnleggende styling til .anmeldelser-meta CSS klasse.


Konklusjon

Vi har dekket grunnleggende om pluginet for avanserte egendefinerte felt. Det vil si, vi har lagt til noen felt og viser dem nå på nettstedet vårt. Det er mye mer til ACF, skjønt, og vi har nettopp riper overflaten. Det er mange flere felttyper du kan bruke, samt mer avanserte funksjoner som betinget logikk.

Ta gjerne spørsmål, kommentarer og generell tilbakemelding på skjemaet nedenfor!