Advanced Custom Fields (ACF) -laajennus tukee täysin kenttien ja ryhmien määrittämistä PHP-koodin mukaan teemassasi tai laajennuksessasi. Tämän tekemisen etuna on, että kaikki kentäsi ovat käytettävissä riippumatta WordPress-esiintymästä, jota käytät (jos esimerkiksi sinun on vaihdettava paikallisen, testipalvelimen ja live-palvelimen välillä). Voit määrittää kaikki kentät ACF:n järjestelmänvalvojassa ja viedä ne PHP:hen vientityökalulla.
Jos kuitenkin teet tämän usein, saatat huomata, että ACF:n PHP-vienti sisältää paljon koodia, mikä tekee PHP-tiedostoistasi tarpeettoman pitkiä. Joissakin tapauksissa on parempi kirjoittaa koodi itse, vähimmäismäärällä, jotta teemasi tai laajennuksessasi olisi selkeämpi koodi. Tämän oppaan tarkoituksena on tarjota sinulle täydellinen viite ACF-kenttien ja -ryhmien lisäämiseen PHP:ssä manuaalisesti. Huomaa, että siinä ei käsitellä yksityiskohtaisesti jokaista kenttätyyppiä, koska siinä oletetaan, että tunnet jo ACF:ssä mahdolliset erilaiset kentät.
Mutta ensin; joitain varotoimia
Säilyttääksesi hyvät koodistandardit ja varmistaaksesi, että WordPress-sivustosi ei kaatuisi, sinun tulee aina tarkistaa, ovatko koodisi käyttämät toiminnot tai luokat todella olemassa. Varsinkin kun kyse on laajennuksista, jotka voidaan helposti poistaa käytöstä tai joita ei edes asenneta sivustolle, sinun tulee aina kääriä laajennuskohtainen koodisi if-testiin, joka tarkistaa, ovatko käyttämäsi toiminnot olemassa, ennen kuin käytät niitä.
ACF:n osalta voit tehdä sen tarkistamalla, onko luokka 'acf'
olemassa tai onko kenttien ja ryhmien lisäystoiminto, 'acf_add_local_field_group'
, olemassa. Kääri jompikumpi näistä alla olevan koodin ympärille.
if (function_exists('acf_add_local_field_group')) {
// Your ACF specific code here
}
// OR:
if (class_exists('acf')) {
// Your ACF specific code here
}
Luurankokoodi
Metalaatikoiden (ryhmien) ja kenttien lisäämiseen käytämme koukkua nimeltä acf/init
. Funktion sisällä kutsumme funktiota acf_add_local_field_group()
, jonka parametrina on taulukko. Tämän taulukon sisällä on ryhmän ja sen kaikkien kenttien täydellinen asennus. Tärkeimmät ovat taulukkonäppäimet 'fields'
ja 'location'
. Taulukkoavaimelle 'fields'
annat taulukon kaikille kentille ja avaimelle 'location'
määrität asetukset, missä metalaatikon pitäisi näkyä. Tässä viestissä käsitellään yksityiskohtaisesti, mitä vaihtoehtoja sinulla on alla kullekin näistä.
Tämä on vähimmäisvaatimus ryhmän lisäämiseksi kenttiä ja sijaintia lukuun ottamatta:
Jokainen ryhmä tarvitsee yksilöllisen avaimen, mutta varsinaisella nimellä ei ole paljoa väliä (meille). Jos lisäät ryhmiä, älä unohda vaihtaa 'key'
kenttää. Metalaatikon otsikko voidaan asettaa taulukon avainelementtiin, arvasit sen, 'title'
. Jos lisäät useita metalaatikoita samaan paikkaan (esim. jälkimuokkauksessa), voit hallita, mikä tulee ensin antamalla eri numerot 'menu_order'
.
Voit hallita metabox-suunnittelua antamalla jommankumman default
ellerin seamless
. 'style'
Uudella Gutenberg-editorilla tällä on kuitenkin paljon vähemmän merkitystä. Sama koskee avainta 'position'
, jossa ennen vanhaan saattoi sijoittaa metalaatikon viestin sisällön alle ('normal'
), sivulle ('side'
) tai heti viestin otsikon jälkeen ('acf_after_title'
).
Hyvä on! Sukellaan kahteen mielenkiintoisempaan taulukon elementtiin; alkaen sijainnista – joka määrittää, missä metalaatikko näkyy.
Sijainti
Tämä kaikki liittyy siihen, mitä laitat avaimeen 'location'
. Mutta ennen kuin tarkastelemme mahdollisia vaihtoehtoja, meidän on ymmärrettävä sen taulukkorakenne.
'location'
hyväksyy taulukon, jossa on joukko elementtejä! Kestä. Kyllä, koska on mahdollista tarjota ja yhdistää AND- ja OR-logiikka sijainnissa (esim. "näytä tekstin muokkauksessa, mutta ei, jos viestityyppi on "kirja" tai "näytä käyttäjän muokkausnäytössä ja luo myös uusi käyttäjänäyttö, mutta molemmissa tapauksissa ei, jos nykyinen rooli on tekijä). Tapa, jolla merkitset, onko se AND tai OR, on jäsentää taulukoita. Se on paljon helpompi näyttää kuin selittää sanoin:
Näin yhdistät kaksi sijaintielementtiä JA-logiikalla (molempien on oltava tosia):
Ja tämä on tarkoitettu sijaintien yhdistämiseen OR-logiikalla (vain yhden täytyy olla totta):
Näetkö eron?
OK, jatketaan. Jokainen sijaintivaihtoehto koostuu kolmen elementin joukosta; 'param'
johon lisäämme kaikki eri sijainnit, 'operator'
ja 'value'
. Operaattori on tapa verrata arvoa, ja se voi olla '=='
yhtä suuri tai '!='
ei yhtä suuri.
Käydään läpi mahdolliset vaihtoehdot yksitellen.
Sijainti postityypin mukaan
Aseta haluamasi viestityyppi 'value'
. Muista, että et voi tarjota useiden viestityyppien joukkoa, vaan sinun on yhdistettävä useita näistä taulukoista JA-kokoonpanossa.
Sijainti postin tilan mukaan
Aseta haluamasi viestin tilaksi 'value'
. Muista jälleen, että et voi antaa joukkoa useiden viestien tiloja, vaan sinun on annettava jokainen haluttu arvo JA- tai TAI-määrityksessä.
Sijainti sivumallin mukaan
Tämä näkyy vain, jos valittu sivu (tai mukautettu viestityyppi, jossa on sivumallituki) on valinnut toimitetun sivumallin nimen.
Sijainti määritetyn taksonomiatermin mukaan
Tämä sijainti on tarkoitettu silloin, kun viestiin on määritetty tietty termi. Sinun on annettava arvona taksonomian nimi, kaksoispiste ja termin etana.
Sijainti sivutyypin mukaan
ACF ryhmittelee sivujen erikoisominaisuudet sivutyypeiksi. Se koskee lähinnä sitä, onko nykyinen sivu ylä- tai alasivu, mutta myös kohdistussivuille, jotka on asetettu WordPressin etusivuksi tai blogisivuksi.
Sijainti: taksonomia
Paikka, jossa termiä muokataan tai lisätään taksonomiaan.
Anna taksonomian nimi muodossa 'value'
. Muista, että et voi tarjota joukkoa useita taksonomioita, mutta voit tarjota 'all'
kohdistaaksesi kaikki taksonomiat.
Sijainti: käyttäjä
Tämä sijainti on tarkoitettu käyttäjäprofiilin lisäämiseen tai muokkaamiseen.
Anna 'edit
‘, jos haluat kohdistaa vain olemassa olevien käyttäjien muokkausnäyttöön, 'register'
kohdistaaksesi vain lomakkeeseen uuden käyttäjän rekisteröinnin yhteydessä tai ‘ all'
molemmille yllä oleville.
Sijainti: valikkokohta
ACF 5.6:sta lähtien voit lisätä kenttäryhmiä myös valikon kohtiin.
Voit määrittää value
käyttämään all
ryhmää kaikkiin valikon kohtiin tai voit määrittää valikot joko sijainnin (teeman rekisteröidyt sijainnit) tai valikkotunnuksen mukaan. Sijainnin käyttöä varten 'location/<name>'
– joten sijainnille, jonka nimi on ‘ primary
‘, voit asettaa arvon käyttämään 'location/primary'
ryhmääsi vain tälle sijainnille määritettyyn valikkoon. Jos haluat kohdistaa tiettyyn valikon tunnukseen, aseta arvoksi kyseisen tunnuksen merkkijono.
Sijainti: widget
ACF tarjoaa jopa sijainnin widget-asetuksissa muuttamatta widgetin ydinkoodia.
Voit kohdistaa kaikkiin widgeteihin 'all'
nimellä 'value'
tai kohdistaa tiettyyn widgetiin. Sinun on tiedettävä widgetin sisäinen tunnus, johon ne on rekisteröity.
Sijainti: ACF-asetukset-sivu (vain Pro)
ACF Pron avulla voit määrittää mukautettuja järjestelmänvalvojasivuja ACF:n avulla.
Anna nimi, jonka acf_add_options_page
määritit menu_slug
nimellä 'value'
.
Sijainti: lohko (vain Pro 5.8+)
ACF Prossa (5.8+) on ominaisuus Gutenberg-lohkojen lisäämiseen ACF:n kentillä ja sen tuotoksen ohjaamiseen PHP:llä. Melko näppärä niille, jotka eivät ole vielä sukeltaneet mukautettujen Gutenberg-lohkojen ja vaaditun Javascriptin lisäämiseen.
Kentät
Nyt päästään mielenkiintoisempaan osaan; itse kentät. ACF tarjoaa (todella) laajan valikoiman kenttätyyppejä, ja toistan; Tämä opas ei näytä sinulle, mitä kukin kentät ovat ja miten ne toimivat tai miltä ne näyttävät.
Määrittämässäsi ydintaulukossa annat 'fields'
taulukon acf_add_local_field_group()
, jossa jokainen kenttä on oma taulukkonsa.
Jokaiselle kentälle vaadittavat ehdot ovat seuraavat: yksilöllinen 'key'
, joka voi olla mitä tahansa, ja sinun ei todennäköisesti tarvitse koskaan viitata siihen. Tarvitset myös 'name'
, mikä on (post, user, term) meta-avain, johon kentän arvo tallennetaan – ja tähän viittaat kenttien arvoa hakiessasi. Sinun tulisi antaa a 'label'
ja lopuksi ratkaiseva seikka, 'type'
joka määrittää, mitä kenttätyyppiä käsittelemme. Loput kentät riippuvat siitä, 'type'
kuten näemme, kun käymme läpi kunkin kenttätyypin alla.
Tämä on runkokoodi kentän lisäämistä varten.
Muista, että tarvitset edellä mainitun jokaiseen kenttään, mutta jotta sama koodi ei toistuisi, jokainen alla oleva kenttätyyppi sisältää vain 'type'
ja kaikki muut kyseiselle kenttätyypille tarvittavat elementit.
Kenttä: Tekstinsyöttö
Yksinkertaisin kenttä kaikista. Kaikki mitä todella tarvitsemme on:
Mutta voit mukauttaa tekstinsyöttöäsi edelleen antamalla jonkin seuraavista:
Kenttä: Numeron syöttö
Kenttä: Textarea
Kenttä: Alueen liukusäädin
Kenttä: Salasana
Sama kuin tekstinsyöttö, paitsi että kaikki, mitä kirjoitat siihen, peitetään *-merkillä, kuten voit odottaa salasanakentässä.
Kenttä: Kuva
Yhden kuvan valinta.
Kenttä: Tiedosto
Samanlainen kuin yllä oleva kuva, paitsi että se ei esikatsele tiedostoa.
Voit myös antaa 'mime_types' => '',
ja asettaa sen esimerkiksi 'pdf,docx'
sallimaan vain PDF- ja DOCX-tiedostoja.
Kenttä: WYSIWYG-editori
WYSIWYG on "What You See Is What You Get" -editori – joka oli meille tuttu ennen Gutenbergin tuloa (TinyMCE).
Parametri 'media_upload'
ja 'delay'
voi olla 1 (tosi) tai 0 (epätosi).
Kenttä: Valitse
Kenttä: valintaruutu
Huomaa, että 'default_value'
voi olla useita vaihtoehtoja.
Kenttä: Radiopainike
Tosi- asetus 'other_choice'
lisää ylimääräisen "Muu"-valintanapin, jossa on tekstisyöte, johon käyttäjä voi kirjoittaa jotain.
Kenttä: tosi/epätosi (vaihda)
Ja 'ui_on_text'
on 'ui_off_text'
voimassa vain, jos 'ui'
on 1, koska ne määrittelevät, mitä käyttöliittymän erityisessä vaihtokytkimessä pitäisi näkyä.
Kenttä: Linkki
Antaa sinulle painikkeen linkin syöttämiseen joko kirjoittamalla tai valitsemalla WordPress-sivustosi sisällöstä (pitäisi olla tuttua linkin lisäämisestä tavalliseen WordPress-editoriin).
Kenttä: Viestiobjekti
Antaa valintaruudun, jossa voit valita WordPress-sisällöstä. Valinnan avulla voit etsiä kirjoittamalla ja kaikki sisältö on jaettu viestityypin mukaan. Voit sallia valita useita julkaisuja tai vain yhden.
Kenttä: Suhde
Kenttä: Valitse taksonomian termit
Taksonomiatermivalitsimella on neljä erilaista "tilaa" tai tyyppiä, joista kaksi mahdollistaa useita valintoja.
Kenttä: Valitse käyttäjä
Kenttä: Google Maps
Muista, että sinun on annettava kelvollinen GoogleMaps API -avain ACF:lle, jotta tämä kenttä toimisi seuraavasti:
add_filter('acf/fields/google_map/api', function($api) {
$api['key'] = 'YOURAPIKEY';
return $api;
});
Kenttä: Päivämääränvalitsin
Kenttä: Päivämäärä ja aika -valitsin
Kenttä: Aikavalitsin
Kenttä: Colorpicker
Kenttä: Galleria (vain ACF Pro)
Erikoistyyppiset kentät
ACF tarjoaa myös joitain kenttätyyppejä, jotka eivät sinänsä tallenna arvoa, mutta ne ovat enemmän organisaation tarkoitusperiä varten. Aseta kaikille näille 'name'
tyhjäksi merkkijonoksi.
HTML-viesti
Jos sinun on yksinkertaisesti tulostettava HTML-koodia ilman, että se tallentaa arvoa, voit käyttää tyyppiä 'message'
.
Toistin (vain ACF Pro)
Toistin sisältää joukon kenttiä, jotka voidaan toistaa.
Elementti sub_fields
odottaa joukon kenttiä, aivan kuten olet määrittänyt kentät yllä.
Johtopäätös
Tämä ei suinkaan ole tyhjentävä opas, koska ACF tarjoaa niin laajan valikoiman vaihtoehtoja ja mukautuksia. Mutta sen pitäisi kattaa eniten käytetyt vaihtoehdot ja mukautetut käyttötapaukset. Itse huomaan viittaavani tähän melko usein, kun lisään ACF-kenttiä asiakkaille. Ja jopa mitä kummallisimpiin vaihtoehtoihin tämä opas riittää, jotta minun ei tarvitse paisuttaa PHP-tiedostojani ACF:n vientikoodilla. Toivottavasti tästä oli hyötyä myös sinulle!