{"id":233452,"date":"2023-02-14T18:09:00","date_gmt":"2023-02-14T15:09:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233452"},"modified":"2022-11-10T23:45:55","modified_gmt":"2022-11-10T20:45:55","slug":"muokattujen-kenttien-lisaeasetusten-taeyttaeminen-dynaamisesti","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/muokattujen-kenttien-lisaeasetusten-taeyttaeminen-dynaamisesti\/","title":{"rendered":"Muokattujen kenttien lis\u00e4asetusten t\u00e4ytt\u00e4minen dynaamisesti"},"content":{"rendered":"\n<p>Joidenkin PHP-koodien avulla on todella helppoa t\u00e4ytt\u00e4\u00e4 <a href=\"https:\/\/www.advancedcustomfields.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Advanced Custom Fields<\/a> (ACF) -arvo tai -vaihtoehdot dynaamisesti. Voit tehd\u00e4 t\u00e4m\u00e4n kaikenlaisille tuloille, mukaan lukien radion, valintaruutujen ja vastaavien valinnat. T\u00e4ss\u00e4 viestiss\u00e4 katsomme kuinka.<\/p>\n<h2>Suodatin<\/h2>\n<p>Advanced Custom Fields tarjoaa suodattimen nimelt\u00e4 <code>[acf\/load_field](https:\/\/www.advancedcustomfields.com\/resources\/acf-load_field\/)<\/code>. Voit k\u00e4ytt\u00e4\u00e4 t\u00e4t\u00e4 suodatinta useilla eri tavoilla. Suodata <code>acf\/load_field<\/code>soveltaaksesi sit\u00e4 kaikenlaisiin kenttiin tai sis\u00e4llyt\u00e4 koodi koukussa olevaan funktioon selvitt\u00e4\u00e4ksesi, mink\u00e4 kent\u00e4n tyypin tai nimen haluat. Tai voit m\u00e4\u00e4ritt\u00e4\u00e4 joko kent\u00e4n tyypin (<code>acf\/load_field\/type=&lt;type&gt;<\/code>), nimen (<code>acf\/load_field\/name=&lt;name&gt;<\/code>) tai avaimen (<code>acf\/load_field\/key=&lt;key&gt;<\/code>).<\/p>\n<p>Oletetaan, ett\u00e4 luomme tekstikent\u00e4n seuraavasti:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bc7809d8.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bc7809d8.png\" alt=\"Muokattujen kenttien lis\u00e4asetusten t\u00e4ytt\u00e4minen dynaamisesti\" ><\/a><\/p>\n<p>Voisimme kohdistaa t\u00e4h\u00e4n seuraavilla tavoilla: <code>acf\/load_field\/name=dyn_pop_example<\/code>(kohdistaa vain t\u00e4h\u00e4n tiettyyn kentt\u00e4\u00e4n), <code>acf\/load_field\/type=text<\/code>(koskee kaikkia tekstityyppisi\u00e4 kentti\u00e4) tai <code>acf\/load_field<\/code>(koskee kaikkia kentti\u00e4 mink\u00e4 tahansa tyypin tai nimen kanssa). Kahta viimeist\u00e4 suodatinta k\u00e4ytett\u00e4ess\u00e4 voit tietysti kohdistaa funktion sis\u00e4ll\u00e4 tietyn kentt\u00e4tiedon, kuten nimen, mukaan. Jokainen ACF:n kentt\u00e4 saa my\u00f6s ainutlaatuisen avaimen, mutta ne ovat piilotettuja ja ovat enimm\u00e4kseen ACF:n sis\u00e4iseen k\u00e4ytt\u00f6\u00f6n.<\/p>\n<p>Suodatin tarjoaa yhden muuttujan; kentt\u00e4joukko. T\u00e4m\u00e4 taulukko antaa sinulle kaikki tiedot nykyisest\u00e4 kent\u00e4st\u00e4. Voit yksinkertaisesti muuttaa taulukon tietoja ja palauttaa muokatun kentt\u00e4taulukon. Kent\u00e4n tyypist\u00e4 riippuen taulukon elementit vaihtelevat. Esimerkiksi monivalintakentt\u00e4tyypeiss\u00e4, kuten select- ja radioboxes, on taulukkoelementti &#8217; <code>choices<\/code>&#8217;, jota esim. tekstityyppisiss\u00e4 kentiss\u00e4 ei ole. Suosittelen, ett\u00e4 teet jonkin <code>var_dump()<\/code>tarjotun taulukon n\u00e4hd\u00e4ksesi millaisia \u200b\u200btietoja sinulla on k\u00e4ytett\u00e4viss\u00e4si.<\/p>\n<p>Aloitetaan todellisen koodin tutkiminen!<\/p>\n<h2>V\u00e4est\u00f6: yksinkertaisia \u200b\u200besimerkkej\u00e4<\/h2>\n<p>Tekstinsy\u00f6t\u00f6n oletusarvon asettaminen n\u00e4ytt\u00e4isi t\u00e4lt\u00e4:<\/p>\n<pre><code>add_filter('acf\/load_field\/name=dyn_pop_example', function($field) {\n    $field['default_value'] = __('This is default value', 'txtdomain');\n    return $field;\n});<\/code><\/pre>\n<p>Kohdistamme tekstinsy\u00f6t\u00f6llemme nimen <code>dyn_pop_example<\/code>ja asetamme sen oletusarvon (n\u00e4pp\u00e4in &#8217; <code>default_value<\/code>&#8217;) valitsemamme merkkijonoksi. Kentt\u00e4 n\u00e4kyy sitten seuraavasti:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bc94e2b7.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bc94e2b7.png\" alt=\"Muokattujen kenttien lis\u00e4asetusten t\u00e4ytt\u00e4minen dynaamisesti\" ><\/a><\/p>\n<p>Voit muokata mit\u00e4 tahansa kent\u00e4n asetuksia. Alla olevassa esimerkiss\u00e4 asetamme tekstin paikkamerkin ja ohjeet:<\/p>\n<pre><code>add_filter('acf\/load_field\/name=dyn_pop_example', function($field) {\n    $field['placeholder'] = __('Type in here', 'txtdomain');\n    $field['instructions'] = __('Some instructions coming from code', 'txtdomain');\n    return $field;\n});<\/code><\/pre>\n<p>Mik\u00e4 saa kent\u00e4n n\u00e4ytt\u00e4m\u00e4\u00e4n seuraavanlaiseksi:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bcabf334.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bcabf334.png\" alt=\"Muokattujen kenttien lis\u00e4asetusten t\u00e4ytt\u00e4minen dynaamisesti\" ><\/a><\/p>\n<h2>T\u00e4yt\u00e4 valinnat<\/h2>\n<p>Jos haluat t\u00e4ytt\u00e4\u00e4 valinta-, radio- tai valintaruudun vaihtoehdot dynaamisesti, teet t\u00e4m\u00e4n taulukon avainelementiss\u00e4 &#8217; <code>choices<\/code>&#8217;. T\u00e4m\u00e4 <code>choices<\/code>elementti koskee kaikkia kentti\u00e4, joiden tyyppi on valinta, radio ja valintaruutu.<\/p>\n<p>Elementin &quot; <code>choices<\/code>&quot; on oltava avain + arvo -parien joukko. Avaimet ovat arvoja (jotka tallennetaan) ja arvot ovat valintana n\u00e4kyv\u00e4 otsikko.<\/p>\n<p>Oletetaan, ett\u00e4 muutamme kentt\u00e4mme valituksi. Voit j\u00e4tt\u00e4\u00e4 vaihtoehdot tyhjiksi, koska ne asetetaan koodimme kautta.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bcc5cf44.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bcc5cf44.png\" alt=\"Muokattujen kenttien lis\u00e4asetusten t\u00e4ytt\u00e4minen dynaamisesti\" ><\/a><\/p>\n<p>Valittujen valintojen t\u00e4ytt\u00e4miseksi teemme sen seuraavasti:<\/p>\n<pre><code>add_filter('acf\/load_field\/name=dyn_pop_example', function($field) {\n    $choices = [\n        'red' =&gt; __('Red Color', 'txtdomain'),\n        'blue' =&gt; __('Blue Color', 'txtdomain'),\n        'green' =&gt; __('Green Color', 'txtdomain')\n    ];\n    $field['choices'] = $choices;\n    $field['default_value'] = 'blue';\n    return $field;\n});<\/code><\/pre>\n<p>Rivill\u00e4 <code>#2 - #6<\/code>m\u00e4\u00e4rittelemme yksinkertaisesti joukon vaihtoehtoja. Muokkaa t\u00e4t\u00e4 tarpeidesi mukaan. Rivill\u00e4 <code>#7<\/code>kohdistamme kent\u00e4n valinnat taulukkoomme. Hyv\u00e4n mittauksen vuoksi asetamme my\u00f6s kent\u00e4n oletusarvon. T\u00e4m\u00e4 ei ole v\u00e4ltt\u00e4m\u00e4t\u00f6nt\u00e4 \u2013 ilman rivi\u00e4 <code>#8<\/code>select valitsee automaattisesti taulukon ensimm\u00e4isen vaihtoehdon (&#8217;punainen&#8217;).<\/p>\n<p>Yll\u00e4 oleva koodi hahmontaa kent\u00e4n seuraavasti:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bce2ff52.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bce2ff52.png\" alt=\"Muokattujen kenttien lis\u00e4asetusten t\u00e4ytt\u00e4minen dynaamisesti\" ><\/a><\/p>\n<p>Valinnat ovat sinun, sinun tarvitsee vain tarjota oikea avain + arvo -taulukko kent\u00e4n &#8217; <code>choices<\/code>&#8217; -elementille. Perusesimerkkin\u00e4 t\u00e4m\u00e4 koodiesimerkki n\u00e4ytt\u00e4\u00e4, kuinka voit muuttaa normaalin valintakent\u00e4n viestien valinnaksi.<\/p>\n<pre><code>add_filter('acf\/load_field\/name=dyn_pop_example', function($field) {\n    $posts = new WP_Query([\n        'post_type' =&gt; 'page',\n        'posts_per_page' =&gt; -1\n    ]);\n    $choices = [];\n    while ($posts-&gt;have_posts()) { \n        $posts-&gt;the_post();\n        $choices[get_the_ID()] = get_the_title();\n    }\n    wp_reset_query();\n    $field['choices'] = $choices;\n    return $field;\n});<\/code><\/pre>\n<p>Yll\u00e4 oleva koodiesimerkki tekee viestikyselyn, joka hakee kaikki sivut ja t\u00e4ytt\u00e4\u00e4 valintataulukon viestitunnuksella avaimina ja viestien otsikoilla arvoina. T\u00e4m\u00e4 on vain esimerkki; jos aiot valita virkoja ACF tarjoaa muita kentt\u00e4tyyppej\u00e4 erityisesti t\u00e4t\u00e4 varten.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>PHP:n avulla on todella helppoa t\u00e4ytt\u00e4\u00e4 mink\u00e4 tahansa tyyppisten Advanced Custom Fields (ACF) -kenttien arvot tai valinnat dynaamisesti. T\u00e4ss\u00e4 viestiss\u00e4 katsomme kuinka.<\/p>\n","protected":false},"author":1,"featured_media":224889,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[895,719,719,895,917,917,1110,834,843,834,843,864,864],"tags":[1166],"class_list":{"0":"post-233452","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-koodi","8":"category-kehittaejae","11":"category-muut","13":"category-n-a","14":"category-opas-aloittelijoille","15":"category-opetusohjelmia","18":"category-wordpress-5","20":"tag-affiai-fi"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233452","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=233452"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233452\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/224889"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=233452"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=233452"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=233452"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}