WordPress Theme Customizer Metodikk for seksjoner, innstillinger og kontroller - Del 2

I den siste artikkelen definerte vi en enkel metode for alt som kreves for å etablere en ny seksjon, innstillinger og kontroller innenfor Theme Customizer.

I denne artikkelen skal vi fortsette med å gjøre mer av det samme; Vi skal imidlertid legge til nye innstillinger og kontroller i den eksisterende delen, men vi skal se på en rekke forskjellige alternativer, for eksempel radioknapper, velg bokser og inntastingsbokser.

Så med det sagt, la oss fortsette.


En påminnelse om vår metodikk

Husk fra den siste artikkelen at vår metodikk er som følger:

  1. Definer en seksjon
  2. Legg til en innstilling i seksjonen
  3. Legg til en kontroll for innstillingen
  4. Skriv nødvendige JavaScript
  5. Gjør nødvendige anrop til get_theme_mod

Vi gjør dette for hver av de nye kontrollene på følgende innstillinger og kontroller. Når det er nødvendig, snakker vi om data validering og sanitisering etter behov.

Når vi har nådd slutten av artikkelen, vil en versjon av denne artiklens kode også være tilgjengelig for nedlasting fra GitHub.


Endre fargeskjema

La oss legge til et nytt alternativ til Theme Customizer som lar brukeren velge mellom fargeskjemaer - en er standard svart på hvitt fargevalg, den andre vil være omvendt.

1. Legg til en innstilling i seksjonen

For å gjøre dette må vi først legge til en innstilling og en kontroll til vår tcx_register_theme_customizer funksjon. Legg til følgende to funksjonssamtaler nedenfor:

$ wp_customize-> add_setting ('tcx_color_scheme', array ('standard' => 'normal', 'transport' => 'postmessage')); $ wp_customize-> add_control ('tcx_color_scheme', array ('section' => 'tcx_display_options', 'label' => 'Fargeskjema', 'type' => 'radio', 'valg' => => 'Normal', 'inverse' => 'Inverse'))));

Legg merke til at vi legger til en ny innstilling identifisert av tcx_color_scheme ID, og ​​vi bruker åpenbart postmessage transporttype.

For det andre, legg merke til at vi også har gitt en misligholde verdien som er satt til normal. Denne verdien er det som bringer oss til add_control anrop.

2. Legg til en kontroll for innstillingen

Legg merke til at vi binder det til tcx_display_options som vi definerte i den siste artikkelen. Vi har gitt den etiketten Fargevalg siden det er åpenbart hva det er at vi skifter, og vi setter inn type av kontroll som en radio knapp.

For å gjøre dette må vi passere en rekke valg hvor den første nøkkelen er verdien av alternativet og den andre verdien er etiketten for alternativknappen.

Dette er derfor standardverdien for add_setting samtale er satt til normal.

Nå skal vi kunne lagre arbeidet vårt, oppdatere Theme Customizer, og deretter se det nye alternativet.

Men på dette punktet vil det fortsatt ikke gjøre mye.

3. Skriv det nødvendige JavaScript

Nå må vi hoppe over til JS / tema-customizer.js og legg til følgende kodenavn:

wp.customize ('tcx_color_scheme', funksjon (verdi) value.bind (funksjon (til) if ('inverse' === til) $ ('body') .css (bakgrunn: '# 000' farge: '#fff'); else $ ('body') .css (bakgrunn: '#fff', farge: '# 000');););

Dette instruerer Theme Customizer til å endre kroppBakgrunnsfarge og skrifttypefarge basert på innstilling av radioknappene.

Ved å implementere denne koden, bør du kunne oppdatere Theme Customizer og deretter se endringene oppstå. Saken er, verdiene er faktisk ikke lagret i databasen.

4. Gjør nødvendige anrop til get_theme_mod

Den endelige tingen vi må implementere for å sikre at dataene blir lest fra databasen for å endre fargeskjemaet, er å legge til en stil på stil blokkere i tcx_customizer_css funksjon:

 bakgrunn: # 000; farge: #fff;  bakgrunn: #fff; farge: # 000;  

Lett nok å forstå, ikke sant? Den fungerer akkurat som vår JavaScript-kode gjør, bortsett fra at den faktisk gjelder for temaet når siden lastes i stedet for bare når du forhåndsviser det.


Endre skriften

Nå fortsetter vi prosessen ved å introdusere en annen innstilling og en annen kontroll ved hjelp av vår metode slik at brukerne våre kan velge en global skrift for temaet deres.

For å gjøre dette bruker vi en å velge element med et sett med alternativer som brukeren kan velge ønsket front.

På dette tidspunktet bør metodikken bli svært kjent.

1. Legg til en innstilling til seksjonen

Først skal vi definere en innstilling for tcx_font som vi vil bruke til å referere gjennom koden litt senere:

$ wp_customize-> add_setting ('tcx_font', array ('default' => 'tider', 'transport' => 'postMessage'));

Akkurat som i forrige innstilling, er vi gitt misligholde Verdien at vi skal definere øyeblikkelig når vi implementerer en ny kontroll.

2. Legg til en kontroll for innstillingen

Som tidligere nevnt skal vi gi brukerne muligheten til å velge en skrift ved hjelp av en å velge element. Dette ligner på samme måte hvordan radioknapper fungerer, slik at vi gir en matrise med nøkler og verdier som definerer skrifttypen; men den faktiske type av elementet vil være annerledes.

Så med det sagt, legg til følgende kode til tcx_register_theme_customizer funksjon:

$ wp_customize-> add_control ('tcx_font', array ('section' => 'tcx_display_options', 'label' => 'Tema skrifttype', 'type' => 'velg', 'valg' => => 'Times New Roman', 'arial' => 'Arial', 'courier' => 'Courier New')));

Dette vil introdusere en å velge element i Theme Customizer med følgende tre alternativer for skrifter:

  1. Times New Roman
  2. arial
  3. Courier New

Og nå må vi skrive opp skriftvalgene slik at de dynamisk endrer skriften av temaet.

3. Skriv det nødvendige JavaScript

For å gjøre dette, åpne JS / tema-customizer.js og legg deretter til følgende kodenavn. Merk at dette kommer til å være litt mer komplisert enn det vi pleier å gjøre i Theme Customizer JavaScript.

Først må du sørge for at du har var sFont definert øverst på JavaScript-filen like over det første anropet til wp.customize.

Deretter legger du til følgende kodenavn:

wp.customize ('tcx_font', funksjon (verdi) value.bind (funksjon (til) switch (to.toString (). toLowerCase ()) case 'times': sFont = 'Times New Roman'; case 'arial': sFont = 'Arial'; pause; case 'courier': sFont = 'Courier New, Courier'; pause; case 'helvetica': sFont = 'Helvetica'; break; default: sFont = 'Times New Roman '; break; $ (' body ') .css (fontFamily: sFont);););

Selv om funksjonen er litt lengre, er det faktisk ganske enkelt: Vi tar innkommende verdi og bruker deretter en bryter / case for å bestemme hvilken skrift som ble valgt. Basert på den valgte verdien tilordner vi den til sFont variabel.

Og, for defensiv koding, hvis man ikke er definert eller noe går galt under transporten, så går vi til standard Times New Roman.

Endelig gjelder da verdien av sFont til font-family attributten til kropp element ved hjelp av jQuery's css funksjon.

4. Gjør nødvendige anrop til get_theme_mod

Nå, i tråd med vår metodikk, må vi oppdatere vår tcx_customizer_css fungere slik at skrifttypen er riktig påført kroppen.

Dette er faktisk en enkel samtale:

font-family: 

Ferdig.


Tilpass opphavsrettsmeldingen

Til slutt, la oss tillate brukeren å justere opphavsrettsmeldingen som vises nederst i bunntekstmalen.

La oss justere malen nå. Foreløpig skal det se slik ut:

© Alle rettigheter reservert

Men la oss oppdatere den for å se slik ut:

©

Selv om dette blir litt Før vår metodikk er det nødvendig for oss å definere slik at Theme Customizer kan dra nytte av det nye span element, og slik at vi kan vise opphavsrettsmeldingen som definert av brukeren.

1. Legg til en innstilling til seksjonen

Først presenterer vi vår endelige innstilling:

$ wp_customize-> add_setting ('tcx_footer_copyright_text', array ('standard' => 'Alle rettigheter reservert', 'sanitize_callback' => 'tcx_sanitize_copyright', 'transport' => 'postMessage'));

Men legg merke til her, det er en ting som er annerledes enn de forrige inngangene, og det er "sanitize_callback" -tasten og verdien. Dette definerer en funksjon som skal brennes når dataene blir serialisert til databasen - vi gjør ikke det ulovlige innholdet i databasen.

Så, gjør til dette, vil vi definere en funksjon som heter tcx_sanitize_copyright som vil fjerne alle tagger, skråstreker og andre ulovlige koder som skal serialisert til databasen:

funksjon tcx_sanitize_copyright ($ input) return strip_tags (stripslashes ($ input)); 

Vi returnerer rett og slett verdien av den sanitiserte inngangen.

2. Legg til en kontroll for innstillingen

Deretter er det på tide å legge til den faktiske kontrollen for innstillingen.

$ wp_customize-> add_control ('tcx_footer_copyright_text', array ('section' => 'tcx_display_options', 'label' => 'Copyright Message', 'type' => 'tekst'));

Her, igjen, binder vi det til tcx_display_options delen og vi gir den etiketten "Copyright Message" for brukerne å være bord å lese. Endelig har vi definert dette som en tekst inngang.

Selvfølgelig, på dette tidspunktet vet du at vi ikke klarer å faktisk gjøre noe med kontrollen før vi har koblet den til JavaScript.

3. Skriv det nødvendige JavaScript

JavaScript for dette er veldig enkelt, spesielt hvis du har gitt span komponere en unik ID som vi gjorde over.

wp.customize ('tcx_footer_copyright_text', funksjon (verdi) value.bind (funksjon (til) $ ('# copyright-message') .text (til);););

I hovedsak tar det verdien av til argument og deretter setter det som verdien av spans tekst.

4. Gjør nødvendige anrop til get_theme_mod

Og til slutt, selv om vi allerede har gjort det i malen, går vi videre og vurderer koden her:

©

Legg merke til at vi leser verdien av tcx_footer_copyright_text og så skriver vi ut den verdien ut på skjermen.


Neste…

Og for nå er det det! Vi har tatt en titt på noen av de grunnleggende kontrollene, gitt brukeren en betydelig kontroll over utseendet på dette, om enn veldig grunnleggende tema, og vi har dekket hvordan å introdusere data sanitisering sammen med serialiseringsprosessen.

Det eneste som er igjen for å dekke er noen av de mer avanserte, innebygde kontrollene som WordPress tilbyr. Så i den neste artikkelen tar vi en titt på noen av disse funksjonene, og hvordan å implementere dem også.

!