{"id":233432,"date":"2023-02-14T17:50:00","date_gmt":"2023-02-14T14:50:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233432"},"modified":"2022-11-10T23:39:39","modified_gmt":"2022-11-10T20:39:39","slug":"hur-man-dynamiskt-fyller-i-avancerade-anpassade-faeltinstaellningar","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/hur-man-dynamiskt-fyller-i-avancerade-anpassade-faeltinstaellningar\/","title":{"rendered":"Hur man dynamiskt fyller i avancerade anpassade f\u00e4ltinst\u00e4llningar"},"content":{"rendered":"\n<p>Med lite PHP-kod \u00e4r det verkligen enkelt att dynamiskt fylla i ett eller flera val av <a href=\"https:\/\/www.advancedcustomfields.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Advanced Custom Fields<\/a> (ACF). Du kan g\u00f6ra detta f\u00f6r alla typer av ing\u00e5ngar, inklusive val av radio, kryssrutor och liknande. I det h\u00e4r inl\u00e4gget ska vi titta p\u00e5 hur.<\/p>\n<h2>Filtret<\/h2>\n<p>Avancerade anpassade f\u00e4lt erbjuder ett filter som heter <code>[acf\/load_field](https:\/\/www.advancedcustomfields.com\/resources\/acf-load_field\/)<\/code>. Du kan anv\u00e4nda detta filter p\u00e5 flera olika s\u00e4tt. Antingen filter <code>acf\/load_field<\/code>f\u00f6r att till\u00e4mpa det p\u00e5 alla typer av f\u00e4lt eller inkludera kod i din kopplade funktion f\u00f6r att ta reda p\u00e5 vilken f\u00e4lttyp eller namn du vill ha. Eller s\u00e5 kan du ange antingen f\u00e4lttyp (<code>acf\/load_field\/type=&lt;type&gt;<\/code>), namn (<code>acf\/load_field\/name=&lt;name&gt;<\/code>) eller nyckel (<code>acf\/load_field\/key=&lt;key&gt;<\/code>).<\/p>\n<p>Anta att vi skapar ett textf\u00e4lt s\u00e5 h\u00e4r:<\/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=\"Hur man dynamiskt fyller i avancerade anpassade f\u00e4ltinst\u00e4llningar\" ><\/a><\/p>\n<p>Vi skulle kunna rikta in oss p\u00e5 detta med <code>acf\/load_field\/name=dyn_pop_example<\/code>(riktar endast p\u00e5 detta specifika f\u00e4lt), <code>acf\/load_field\/type=text<\/code>(g\u00e4ller alla f\u00e4lt av typtext) eller <code>acf\/load_field<\/code>(g\u00e4ller alla f\u00e4lt av vilken typ eller namn som helst). N\u00e4r du anv\u00e4nder de tv\u00e5 sista filtren kan du givetvis inuti funktionen rikta in dig p\u00e5 specifik f\u00e4ltinformation, s\u00e5som namn. Varje f\u00e4lt i ACF f\u00e5r ocks\u00e5 en unik nyckel, men de \u00e4r dolda och \u00e4r mestadels f\u00f6r ACF:s internt bruk.<\/p>\n<p>Filtret tillhandah\u00e5ller en variabel; f\u00e4ltarrayen. Denna array ger dig all information om det aktuella f\u00e4ltet. Vad du g\u00f6r \u00e4r att helt enkelt \u00e4ndra informationen i arrayen och returnera den modifierade f\u00e4ltarrayen. Beroende p\u00e5 typen av f\u00e4lt skiljer sig elementen i arrayen \u00e5t. Till exempel kommer flervalsf\u00e4lttyper som select och radioboxar att ha ett arrayelement &#8217; <code>choices<\/code>&#8217; som f\u00e4lt av t.ex. typtext inte kommer att ha. Jag rekommenderar att du g\u00f6r en <code>var_dump()<\/code>av den tillhandah\u00e5llna arrayen f\u00f6r att se vilken typ av information du har tillg\u00e5ng till.<\/p>\n<p>L\u00e5t oss b\u00f6rja titta p\u00e5 lite faktisk kod!<\/p>\n<h2>Befolkning: enkla exempel<\/h2>\n<p>Att st\u00e4lla in standardv\u00e4rdet f\u00f6r en textinmatning skulle se ut ungef\u00e4r s\u00e5 h\u00e4r:<\/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>Vi riktar in v\u00e5r textinmatning med namnet <code>dyn_pop_example<\/code>och st\u00e4ller in dess standardv\u00e4rde (nyckel &#8217; <code>default_value<\/code>&#8217;) till en str\u00e4ng som vi sj\u00e4lva v\u00e4ljer. F\u00e4ltet kommer d\u00e5 att \u00e5terges s\u00e5 h\u00e4r:<\/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=\"Hur man dynamiskt fyller i avancerade anpassade f\u00e4ltinst\u00e4llningar\" ><\/a><\/p>\n<p>Du kan \u00e4ndra alla inst\u00e4llningar i f\u00e4ltet. I exemplet nedan st\u00e4ller vi in \u200b\u200btextens platsh\u00e5llare och instruktioner:<\/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>Vilket g\u00f6r att f\u00e4ltet \u00e5terges s\u00e5 h\u00e4r:<\/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=\"Hur man dynamiskt fyller i avancerade anpassade f\u00e4ltinst\u00e4llningar\" ><\/a><\/p>\n<h2>Befolka val<\/h2>\n<p>Om du dynamiskt vill fylla i valen f\u00f6r ett markerings-, radio- eller kryssrutef\u00e4lt, g\u00f6r du detta i array-nyckelelementet &#8217; <code>choices<\/code>&#8217;. Detta &#8217; <code>choices<\/code>&#8217; element g\u00e4ller f\u00f6r alla f\u00e4lt av typ select, radio och checkbox.<\/p>\n<p>Elementet &#8217; <code>choices<\/code>&#8217; m\u00e5ste vara en matris med nyckel + v\u00e4rdepar. Nycklarna \u00e4r v\u00e4rdena (som kommer att sparas) och v\u00e4rdena \u00e4r etiketten som visas som valet.<\/p>\n<p>Antag att vi \u00e4ndrar v\u00e5rt f\u00e4lt till ett urval. Du kan l\u00e4mna valen tomma eftersom de st\u00e4lls in via v\u00e5r kod.<\/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=\"Hur man dynamiskt fyller i avancerade anpassade f\u00e4ltinst\u00e4llningar\" ><\/a><\/p>\n<p>F\u00f6r att fylla i de utvalda valen g\u00f6r vi s\u00e5 h\u00e4r:<\/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>P\u00e5 linjen <code>#2 - #6<\/code>definierar vi helt enkelt en m\u00e4ngd val. \u00c4ndra detta efter dina behov. P\u00e5 line <code>#7<\/code>tilldelar vi f\u00e4ltets val till v\u00e5r array. F\u00f6r godo anger vi ocks\u00e5 f\u00e4ltets standardv\u00e4rde. Detta \u00e4r inte n\u00f6dv\u00e4ndigt \u2013 utan linje <code>#8<\/code>skulle select helt enkelt automatiskt v\u00e4lja det f\u00f6rsta valet i arrayen (&#8217;r\u00f6d&#8217;).<\/p>\n<p>Ovanst\u00e5ende kod kommer att g\u00f6ra f\u00e4ltet s\u00e5 h\u00e4r:<\/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=\"Hur man dynamiskt fyller i avancerade anpassade f\u00e4ltinst\u00e4llningar\" ><\/a><\/p>\n<p>Valen \u00e4r upp till dig, allt du beh\u00f6ver ta hand om \u00e4r att tillhandah\u00e5lla en korrekt nyckel + v\u00e4rde array till f\u00e4ltets &#8217; <code>choices<\/code>&#8217; element. Som ett grundl\u00e4ggande exempel visar detta kodexempel hur du kan f\u00f6rvandla ett normalt urvalsf\u00e4lt till ett urval av inl\u00e4gg.<\/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>Kodexemplet ovan g\u00f6r en inl\u00e4ggsfr\u00e5ga som h\u00e4mtar alla sidor och fyller valmatrisen med inl\u00e4ggs-ID:n som nycklar och posttitlarna som v\u00e4rden. Detta \u00e4r bara som ett exempel; om du ska g\u00f6ra ett val av inl\u00e4gg erbjuder ACF andra f\u00e4lttyper specifikt f\u00f6r detta.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Med PHP \u00e4r det verkligen enkelt att dynamiskt fylla i alla typer av ACF-f\u00e4lt (Advanced Custom Fields) v\u00e4rde eller val. I det h\u00e4r inl\u00e4gget ska vi titta p\u00e5 hur.<\/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":[901,724,838,848,901,922,1110,922,838,848,724,868,868],"tags":[1173],"class_list":{"0":"post-233432","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-koda","8":"category-utvecklaren","9":"category-guide-foer-nyboerjare","10":"category-handledningar","12":"category-oevrig","13":"category-n-a","18":"category-wordpress-9","20":"tag-affiai-sv"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233432","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=233432"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233432\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/224889"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=233432"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=233432"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=233432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}