Edellisissä vaiheissa opimme komponenttien ja attribuuttien hahmontamisesta lohkossa. Tässä vaiheessa keskitymme siihen, mitä WordPress (ainakin koodissa) kutsuu Inspectoriksi: sivupalkkiin editorin oikealla puolella. Käsittelemme joitain uusia komponentteja, jotka on järkevää sijoittaa sivupalkkiin ja miten niitä käsitellään.
Tarkastajan/sivupalkin komponentti
Jos haluat lisätä mukautetut asetukset ja HTML-koodin Inspector-sivupalkkiin, käärit kaiken komponentin nimeltä InspectorControls
. Mitä tahansa laitat tämän komponentin sisään, tulostetaan sivupalkkiin, ei itse lohkoon/editoriin. Voit periaatteessa laittaa komponentin ja sen sisällön kaikkialle edit
funktion palautukseen.
Sen lisäksi käsittelet asetuksia sivupalkin sisällä samoin kuin ne olivat lohkon sisällä. Jokainen asetus vaatii määritteen, ja voit ladata ja päivittää määritteet samalla tavalla.
Katsotaanpa ensin nopeasti, miltä lohkomme sivupalkki näyttää (kun lohkomme on aktiivinen editorissa) edellisessä vaiheessa päädyttyyn koodiin perustuen.
Kaikissa lohkoissa näkyy oletusarvoisesti lohkon kuvake, nimi ja kuvaus sekä osio Lisäasetukset – kutistettu. Advanced-kohdasta löydät tekstisyötteen CSS-luokan tarjoamiseksi lohkolle.
Sivupalkkiosion ja joidenkin asetusten lisääminen
Sivupalkki on jaettu osiin (kutsutaan koodissa paneeleiksi), ja optimaalisen suunnittelun ja toiminnallisuuden saavuttamiseksi (mukaan lukien avoimen tiivistyksen toiminto) meidän tulisi käyttää WordPressin komponentteja paneelien tulostamiseen oikein.
Käytä komponenttia PanelBody
osion lisäämiseen (ne jotka voit avata tai tiivistää), jotka löytyvät wp.components
pakkauksesta. Komponentti hyväksyy muutaman rekvisiitin, esimerkiksi otsikon ja sen, pitäisikö paneelin olla auki vai kiinni vai ei. Voit myös tarjota mukautetun luokan, kuvakkeen ja liittää tapahtumatoiminnon avaus-sulje-liipaisuun.
PanelBody
WordPress suosittelee sitten käyttämään PanelRow
komponenttia, joka toimii paneelin yleisinä konteina – suunnittelun virtaviivaistamisen varmistamiseksi. Tämä komponentti käyttää automaattisesti jonkin verran marginaalia ja joustavaa rivityyliä sisällöllesi. Tyylin " flex-direction: row
" takia sinun tulee kääriä jokainen asetus yhteen PanelRow
. Tai voit ohittaa sen kokonaan ja ottaa vastuun sen muotoilusta itse diveillä ja sellaisilla.
Paneelin ja asetusten lisääminen
Lisätään lohkoomme sivupalkkipaneeli, jossa on muutama asetus, jotta näemme sen käytännössä. Lisäämme vaihtosäätimen, valintatulon, värivalitsimen ja valintaruudun – vain saadaksemme kokemusta erityyppisistä syöttökomponenteista. Olen jättänyt lohkon sisällön (kahdella RichText
s:llä) ja save
funktion aivan kuten ennenkin.
Kuten aina, aloitamme purkamalla komponentit ja toiminnot, joita haluamme käyttää. Sisällä määritämme yhden attribuutin syötettä kohden ja attributes
sovitamme registerBlockType()
tyypin – esimerkiksi vaihtosäädin odottaa loogista arvoa ja koska pudotusvalikon arvot ovat merkkijonoja, attribuutin tulee olla myös tyyppimerkkijono.
Riviltä #41
aloitamme InspectorControls
komponentin, ja kaikki siitä pisteestä riviin #80
ilmestyy sivupalkkiin. Loput näkyvät itse editorissa, enkä ole tehnyt siihen muutoksia.
Sisälle luomme ensin paneelin, PanelBody
jossa prop initialOpen
on asetettu tosi, kerromme Gutenbergille, että tämä paneeli pitäisi avata oletuksena. Ja sitten on meistä itsestämme kiinni, mitä kuhunkin lisätään PanelRow
.
Komponentille ToggleControl
käytämme samoja rekvisiitta, kuin olemme tehneet ennenkin tekstinsyötteiden kanssa, paitsi että prop:n sijaan value
annamme attribuutin arvon prop sisällä checked
. Tämä koskee kaikkia syötteitä, jotka odottavat valittua attribuuttia tavallisessa HTML:ssä, esimerkiksi valintaruudut. Radiopainikkeissa käytät rekvisiittaa selected
, koska tätä käytetään myös tavallisessa HTML:ssä. Muista, että tämän syötteen määritteen on oltava tyyppiä boolean
.
Mitä tulee CheckboxControl
yksittäisen valintaruudun käsittelyyn, se toimii täsmälleen samalla tavalla kuin ToggleControl
– se palauttaa loogisen arvon riippumatta siitä, onko se valittu vai ei.
Luo SelectControl
valikon avattavan valikon ja odottaa mahdollisia valintoja taulukkona prop options
. Jokaisen elementin on oltava objekti, jolla on ominaisuudet label
ja value
. Sama koskee valintaruutuja ja valintapainikkeita (RadioControl
). Normaaleissa olosuhteissa luot luultavasti valinnat muuttujana HTML-ulostulon ulkopuolella.
Saatat huomata, että se ColorPicker
toimii hieman eri tavalla kuin muut, koska tämä on monimutkaisempi komponentti eikä tavallinen HTML-syöttö. Anna color
tallennetun värin tuki ja sen sijaan onChange
(säteilee kerran napsauttamalla, mutta myös aina, kun arvoa muutetaan vedettäessä – mikä voi johtaa useisiin tulipaloihin) onChangeComplete
. Tässä tapahtumassa palautettu rekvisiitta on myös objekti, jossa meidän on päätettävä, minkä osan haluamme tallentaa attribuutissamme. Tässä esimerkissä haluamme tallentaa heksadesimaaliarvon (ilman alfaa/opasiteettia), joten sisällä setAttributes()
poimimme palautetun objektin hex
ominaisuuden. color
Tästä syystä myös lisäämme kiinteistöndisableAlpha
Alfa-kanavan käyttöliittymän poistaminen (opasiteetin hallintaan), koska ei ole järkevää tarjota käyttäjälle tätä, kun emme koskaan tallenna peittävyysarvoa.
Jokaisessa komponentissa on label
käytettävissä rekvisiitta, paitsi värivalitsin. Jos haluat tulostaa tunnisteen tai tekstin ennen sitä, sinun on käytettävä HTML-koodia tai tyyliä varmistaaksesi, että se näyttää hyvältä.
Voit tietysti lisätä niin monta paneelia kuin haluat, lisää vain toinen PanelBody
komponentti edellisen jälkeen.
Jos olet kiinnostunut oppimaan lisää lohkoasetusten lisäämisestä, minulla on erilliset opetusohjelmat monimutkaisemmille asetuksille ja komponenteille Inspectorille. Kuvavalinnan lisääminen ja väriasetuspaneelin lisääminen.
Käsittelysave
Olen jättänyt save
toiminnon entisellään. Se on sinun ja kaikki riippuu siitä, mitä asetukset ohjaavat lähdössä. Tiedät jo, kuinka saada kunkin asetuksen arvot. Esimerkkinä oletetaan, että boolean-attribuutti activateLasers
ohjaa, hahmonnetaanko mukautettu HTML-elementti vai ei. Jos attribuutti true
on div, tulee tulostaa, muuten ei. Voit tehdä sen perinteisellä if-checkillä tai käyttää JSX:n riviä if
ja &&
operaattoria. Lue lisää tästä Reactin ehdollisen renderöinnin oppaasta.
Koska käytämme RichText
tätä tulostetta, se ei näy editorissa, mutta se näkyy käyttöliittymässä.
Löydät lisää komponentteja wp.components
Githubin reposta. Useimmat näistä kansioista tarjoavat sinulle readme-tiedoston, jossa on ohjeita sen käytöstä. Opin suurimman osan tästä katsomalla tätä repoa ja myös WordPressin ydinkomponentteja, kuinka he sen tekivät.
Sarjan seuraavassa vaiheessa keskitymme lohkon työkalurivin ohjaamiseen. Opettelemme käsittelemään esimerkiksi lohkon kohdistusta ja lisäämään mukautettuja painikkeita työkalupalkkiin.