{"id":233454,"date":"2023-02-14T18:04:00","date_gmt":"2023-02-14T15:04:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233454"},"modified":"2022-11-10T23:47:31","modified_gmt":"2022-11-10T20:47:31","slug":"jak-dynamicznie-wypelniac-zaawansowane-ustawienia-pol-niestandardowych","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/jak-dynamicznie-wypelniac-zaawansowane-ustawienia-pol-niestandardowych\/","title":{"rendered":"Jak dynamicznie wype\u0142nia\u0107 zaawansowane ustawienia p\u00f3l niestandardowych"},"content":{"rendered":"\n<p>Z niekt\u00f3rymi kodami PHP bardzo \u0142atwo jest dynamicznie wype\u0142nia\u0107 warto\u015bci lub opcje <a href=\"https:\/\/www.advancedcustomfields.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">zaawansowanych p\u00f3l niestandardowych (ACF).<\/a> Mo\u017cesz to zrobi\u0107 dla dowolnego rodzaju wej\u015b\u0107, w tym wybor\u00f3w radia, p\u00f3l wyboru i tym podobnych. W tym po\u015bcie przyjrzymy si\u0119, jak.<\/p>\n<h2>Filtr<\/h2>\n<p>Zaawansowane pola niestandardowe udost\u0119pnia filtr o nazwie <code>[acf\/load_field](https:\/\/www.advancedcustomfields.com\/resources\/acf-load_field\/)<\/code>. Mo\u017cesz u\u017cy\u0107 tego filtra na kilka r\u00f3\u017cnych sposob\u00f3w. Albo filtr <code>acf\/load_field<\/code>, aby zastosowa\u0107 go do wszystkich rodzaj\u00f3w p\u00f3l, albo do\u0142\u0105czy\u0107 kod do przechwyconej funkcji, aby dowiedzie\u0107 si\u0119, jaki typ pola lub nazw\u0119 chcesz. Mo\u017cesz te\u017c okre\u015bli\u0107 typ pola (<code>acf\/load_field\/type=&lt;type&gt;<\/code>), nazw\u0119 (<code>acf\/load_field\/name=&lt;name&gt;<\/code>) lub klucz (<code>acf\/load_field\/key=&lt;key&gt;<\/code>).<\/p>\n<p>Za\u0142\u00f3\u017cmy, \u017ce tworzymy takie pole tekstowe:<\/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=\"Jak dynamicznie wype\u0142nia\u0107 zaawansowane ustawienia p\u00f3l niestandardowych\" ><\/a><\/p>\n<p>Mo\u017cemy kierowa\u0107 na to <code>acf\/load_field\/name=dyn_pop_example<\/code>(kieruje tylko na to konkretne pole), <code>acf\/load_field\/type=text<\/code>(dotyczy wszystkich p\u00f3l typu tekst) lub <code>acf\/load_field<\/code>(dotyczy wszystkich p\u00f3l dowolnego typu lub nazwy). U\u017cywaj\u0105c dw\u00f3ch ostatnich filtr\u00f3w, mo\u017cesz oczywi\u015bcie wewn\u0105trz funkcji target przez okre\u015blone informacje pola, takie jak nazwa. Ka\u017cde pole w ACF r\u00f3wnie\u017c otrzymuje unikalny klucz, ale s\u0105 one ukryte i s\u0142u\u017c\u0105 g\u0142\u00f3wnie do u\u017cytku wewn\u0119trznego ACF.<\/p>\n<p>Filtr udost\u0119pnia jedn\u0105 zmienn\u0105; tablica pola. Ta tablica zawiera wszystkie informacje o bie\u017c\u0105cym polu. Po prostu zmieniasz informacje w tablicy i zwracasz zmodyfikowan\u0105 tablic\u0119 p\u00f3l. W zale\u017cno\u015bci od typu pola elementy tablicy r\u00f3\u017cni\u0105 si\u0119. Na przyk\u0142ad typy p\u00f3l wielokrotnego wyboru, takie jak select i radioboxes, b\u0119d\u0105 mia\u0142y element tablicy &#8217; <code>choices<\/code>&#8217;, kt\u00f3rego nie b\u0119d\u0105 mia\u0142y pola typu tekst. Zalecam wykonanie <code>var_dump()<\/code>podanej tablicy, aby zobaczy\u0107, do jakiego rodzaju informacji masz dost\u0119p.<\/p>\n<p>Zacznijmy przygl\u0105da\u0107 si\u0119 prawdziwemu kodowi!<\/p>\n<h2>Populacja: proste przyk\u0142ady<\/h2>\n<p>Ustawienie domy\u015blnej warto\u015bci wprowadzania tekstu wygl\u0105da\u0142oby mniej wi\u0119cej tak:<\/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>Wprowadzamy tekst na nazw\u0119 <code>dyn_pop_example<\/code>i ustawiamy jego domy\u015bln\u0105 warto\u015b\u0107 (klucz &#8217; <code>default_value<\/code>&#8217;) na wybrany przez nas ci\u0105g. Pole b\u0119dzie wtedy renderowane tak:<\/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=\"Jak dynamicznie wype\u0142nia\u0107 zaawansowane ustawienia p\u00f3l niestandardowych\" ><\/a><\/p>\n<p>Mo\u017cesz modyfikowa\u0107 dowolne ustawienia pola. W poni\u017cszym przyk\u0142adzie ustawiamy symbol zast\u0119pczy tekstu i instrukcje:<\/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>Co sprawi, \u017ce pole b\u0119dzie renderowane tak:<\/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=\"Jak dynamicznie wype\u0142nia\u0107 zaawansowane ustawienia p\u00f3l niestandardowych\" ><\/a><\/p>\n<h2>Wype\u0142nij wybory<\/h2>\n<p>Je\u015bli chcesz dynamicznie wype\u0142nia\u0107 pola wyboru, radia lub pola wyboru, robisz to w elemencie klucza tablicy \u201e <code>choices<\/code>&quot;. Ten <code>choices<\/code>element \u201e &#8221; dotyczy wszystkich p\u00f3l typu select, radio i checkbox.<\/p>\n<p>Element \u201e <code>choices<\/code>&#8221; musi by\u0107 tablic\u0105 par klucz + warto\u015b\u0107. Klucze to warto\u015bci (kt\u00f3re zostan\u0105 zapisane), a warto\u015bci to etykieta, kt\u00f3ra pojawia si\u0119 jako wyb\u00f3r.<\/p>\n<p>Za\u0142\u00f3\u017cmy, \u017ce zmieniamy nasze pole na wybierz. Mo\u017cesz pozostawi\u0107 pola puste, poniewa\u017c zostan\u0105 ustawione za pomoc\u0105 naszego kodu.<\/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=\"Jak dynamicznie wype\u0142nia\u0107 zaawansowane ustawienia p\u00f3l niestandardowych\" ><\/a><\/p>\n<p>Aby wype\u0142ni\u0107 wybory wyboru, robimy to w ten spos\u00f3b:<\/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>W linii <code>#2 - #6<\/code>po prostu definiujemy tablic\u0119 wybor\u00f3w. Dostosuj to do swoich potrzeb. W wierszu <code>#7<\/code>przypisujemy wybrane pola do naszej tablicy. Na wszelki wypadek ustawiamy r\u00f3wnie\u017c domy\u015bln\u0105 warto\u015b\u0107 pola. Nie jest to konieczne \u2013 bez linii <code>#8<\/code>select po prostu automatycznie wybierze pierwszy wyb\u00f3r w tablicy (&#8217;czerwony&#8217;).<\/p>\n<p>Powy\u017cszy kod wyrenderuje pole tak:<\/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=\"Jak dynamicznie wype\u0142nia\u0107 zaawansowane ustawienia p\u00f3l niestandardowych\" ><\/a><\/p>\n<p>Wyb\u00f3r zale\u017cy od Ciebie, jedyne, o co musisz zadba\u0107, to dostarczenie odpowiedniej tablicy klucz + warto\u015b\u0107 do <code>choices<\/code>elementu \u201e &#8221; pola. Jako podstawowy przyk\u0142ad ten przyk\u0142ad kodu pokazuje, w jaki spos\u00f3b mo\u017cna zmieni\u0107 normalne pole wyboru w wyb\u00f3r post\u00f3w.<\/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>Powy\u017cszy przyk\u0142ad kodu powoduje, \u017ce zapytanie o post pobiera wszystkie strony i wype\u0142nia tablic\u0119 wyboru identyfikatorami post\u00f3w jako kluczami i tytu\u0142ami post\u00f3w jako warto\u015bciami. To tylko przyk\u0142ad; je\u015bli zamierzasz dokona\u0107 wyboru post\u00f3w, ACF oferuje inne typy p\u00f3l specjalnie do tego celu.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dzi\u0119ki PHP bardzo \u0142atwo jest dynamicznie wype\u0142nia\u0107 warto\u015bci lub wybory dowolnego typu p\u00f3l zaawansowanych niestandardowych p\u00f3l (ACF). W tym po\u015bcie przyjrzymy si\u0119, jak.<\/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":[897,721,721,919,897,919,1110,836,836,845,845,866,866],"tags":[1169],"class_list":{"0":"post-233454","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-kod","8":"category-deweloper","10":"category-inny","13":"category-n-a","14":"category-przewodnik-dla-poczatkujacych","16":"category-samouczki","18":"category-wordpress-7","20":"tag-affiai-pl"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/233454","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=233454"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/233454\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/224889"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=233454"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=233454"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=233454"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}