Joidenkin PHP-koodien avulla on todella helppoa täyttää Advanced Custom Fields (ACF) -arvo tai -vaihtoehdot dynaamisesti. Voit tehdä tämän kaikenlaisille tuloille, mukaan lukien radion, valintaruutujen ja vastaavien valinnat. Tässä viestissä katsomme kuinka.
Suodatin
Advanced Custom Fields tarjoaa suodattimen nimeltä [acf/load_field](https://www.advancedcustomfields.com/resources/acf-load_field/)
. Voit käyttää tätä suodatinta useilla eri tavoilla. Suodata acf/load_field
soveltaaksesi sitä kaikenlaisiin kenttiin tai sisällytä koodi koukussa olevaan funktioon selvittääksesi, minkä kentän tyypin tai nimen haluat. Tai voit määrittää joko kentän tyypin (acf/load_field/type=<type>
), nimen (acf/load_field/name=<name>
) tai avaimen (acf/load_field/key=<key>
).
Oletetaan, että luomme tekstikentän seuraavasti:
Voisimme kohdistaa tähän seuraavilla tavoilla: acf/load_field/name=dyn_pop_example
(kohdistaa vain tähän tiettyyn kenttään), acf/load_field/type=text
(koskee kaikkia tekstityyppisiä kenttiä) tai acf/load_field
(koskee kaikkia kenttiä minkä tahansa tyypin tai nimen kanssa). Kahta viimeistä suodatinta käytettäessä voit tietysti kohdistaa funktion sisällä tietyn kenttätiedon, kuten nimen, mukaan. Jokainen ACF:n kenttä saa myös ainutlaatuisen avaimen, mutta ne ovat piilotettuja ja ovat enimmäkseen ACF:n sisäiseen käyttöön.
Suodatin tarjoaa yhden muuttujan; kenttäjoukko. Tämä taulukko antaa sinulle kaikki tiedot nykyisestä kentästä. Voit yksinkertaisesti muuttaa taulukon tietoja ja palauttaa muokatun kenttätaulukon. Kentän tyypistä riippuen taulukon elementit vaihtelevat. Esimerkiksi monivalintakenttätyypeissä, kuten select- ja radioboxes, on taulukkoelementti ‘ choices
‘, jota esim. tekstityyppisissä kentissä ei ole. Suosittelen, että teet jonkin var_dump()
tarjotun taulukon nähdäksesi millaisia tietoja sinulla on käytettävissäsi.
Aloitetaan todellisen koodin tutkiminen!
Väestö: yksinkertaisia esimerkkejä
Tekstinsyötön oletusarvon asettaminen näyttäisi tältä:
add_filter('acf/load_field/name=dyn_pop_example', function($field) {
$field['default_value'] = __('This is default value', 'txtdomain');
return $field;
});
Kohdistamme tekstinsyötöllemme nimen dyn_pop_example
ja asetamme sen oletusarvon (näppäin ‘ default_value
‘) valitsemamme merkkijonoksi. Kenttä näkyy sitten seuraavasti:
Voit muokata mitä tahansa kentän asetuksia. Alla olevassa esimerkissä asetamme tekstin paikkamerkin ja ohjeet:
add_filter('acf/load_field/name=dyn_pop_example', function($field) {
$field['placeholder'] = __('Type in here', 'txtdomain');
$field['instructions'] = __('Some instructions coming from code', 'txtdomain');
return $field;
});
Mikä saa kentän näyttämään seuraavanlaiseksi:
Täytä valinnat
Jos haluat täyttää valinta-, radio- tai valintaruudun vaihtoehdot dynaamisesti, teet tämän taulukon avainelementissä ‘ choices
‘. Tämä choices
elementti koskee kaikkia kenttiä, joiden tyyppi on valinta, radio ja valintaruutu.
Elementin " choices
" on oltava avain + arvo -parien joukko. Avaimet ovat arvoja (jotka tallennetaan) ja arvot ovat valintana näkyvä otsikko.
Oletetaan, että muutamme kenttämme valituksi. Voit jättää vaihtoehdot tyhjiksi, koska ne asetetaan koodimme kautta.
Valittujen valintojen täyttämiseksi teemme sen seuraavasti:
Rivillä #2 - #6
määrittelemme yksinkertaisesti joukon vaihtoehtoja. Muokkaa tätä tarpeidesi mukaan. Rivillä #7
kohdistamme kentän valinnat taulukkoomme. Hyvän mittauksen vuoksi asetamme myös kentän oletusarvon. Tämä ei ole välttämätöntä – ilman riviä #8
select valitsee automaattisesti taulukon ensimmäisen vaihtoehdon (‘punainen’).
Yllä oleva koodi hahmontaa kentän seuraavasti:
Valinnat ovat sinun, sinun tarvitsee vain tarjota oikea avain + arvo -taulukko kentän ‘ choices
‘ -elementille. Perusesimerkkinä tämä koodiesimerkki näyttää, kuinka voit muuttaa normaalin valintakentän viestien valinnaksi.
Yllä oleva koodiesimerkki tekee viestikyselyn, joka hakee kaikki sivut ja täyttää valintataulukon viestitunnuksella avaimina ja viestien otsikoilla arvoina. Tämä on vain esimerkki; jos aiot valita virkoja ACF tarjoaa muita kenttätyyppejä erityisesti tätä varten.