Z niektórymi kodami PHP bardzo łatwo jest dynamicznie wypełniać wartości lub opcje zaawansowanych pól niestandardowych (ACF). Możesz to zrobić dla dowolnego rodzaju wejść, w tym wyborów radia, pól wyboru i tym podobnych. W tym poście przyjrzymy się, jak.
Filtr
Zaawansowane pola niestandardowe udostępnia filtr o nazwie [acf/load_field](https://www.advancedcustomfields.com/resources/acf-load_field/)
. Możesz użyć tego filtra na kilka różnych sposobów. Albo filtr acf/load_field
, aby zastosować go do wszystkich rodzajów pól, albo dołączyć kod do przechwyconej funkcji, aby dowiedzieć się, jaki typ pola lub nazwę chcesz. Możesz też określić typ pola (acf/load_field/type=<type>
), nazwę (acf/load_field/name=<name>
) lub klucz (acf/load_field/key=<key>
).
Załóżmy, że tworzymy takie pole tekstowe:
Możemy kierować na to acf/load_field/name=dyn_pop_example
(kieruje tylko na to konkretne pole), acf/load_field/type=text
(dotyczy wszystkich pól typu tekst) lub acf/load_field
(dotyczy wszystkich pól dowolnego typu lub nazwy). Używając dwóch ostatnich filtrów, możesz oczywiście wewnątrz funkcji target przez określone informacje pola, takie jak nazwa. Każde pole w ACF również otrzymuje unikalny klucz, ale są one ukryte i służą głównie do użytku wewnętrznego ACF.
Filtr udostępnia jedną zmienną; tablica pola. Ta tablica zawiera wszystkie informacje o bieżącym polu. Po prostu zmieniasz informacje w tablicy i zwracasz zmodyfikowaną tablicę pól. W zależności od typu pola elementy tablicy różnią się. Na przykład typy pól wielokrotnego wyboru, takie jak select i radioboxes, będą miały element tablicy ‘ choices
‘, którego nie będą miały pola typu tekst. Zalecam wykonanie var_dump()
podanej tablicy, aby zobaczyć, do jakiego rodzaju informacji masz dostęp.
Zacznijmy przyglądać się prawdziwemu kodowi!
Populacja: proste przykłady
Ustawienie domyślnej wartości wprowadzania tekstu wyglądałoby mniej więcej tak:
add_filter('acf/load_field/name=dyn_pop_example', function($field) {
$field['default_value'] = __('This is default value', 'txtdomain');
return $field;
});
Wprowadzamy tekst na nazwę dyn_pop_example
i ustawiamy jego domyślną wartość (klucz ‘ default_value
‘) na wybrany przez nas ciąg. Pole będzie wtedy renderowane tak:
Możesz modyfikować dowolne ustawienia pola. W poniższym przykładzie ustawiamy symbol zastępczy tekstu i instrukcje:
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;
});
Co sprawi, że pole będzie renderowane tak:
Wypełnij wybory
Jeśli chcesz dynamicznie wypełniać pola wyboru, radia lub pola wyboru, robisz to w elemencie klucza tablicy „ choices
". Ten choices
element „ ” dotyczy wszystkich pól typu select, radio i checkbox.
Element „ choices
” musi być tablicą par klucz + wartość. Klucze to wartości (które zostaną zapisane), a wartości to etykieta, która pojawia się jako wybór.
Załóżmy, że zmieniamy nasze pole na wybierz. Możesz pozostawić pola puste, ponieważ zostaną ustawione za pomocą naszego kodu.
Aby wypełnić wybory wyboru, robimy to w ten sposób:
W linii #2 - #6
po prostu definiujemy tablicę wyborów. Dostosuj to do swoich potrzeb. W wierszu #7
przypisujemy wybrane pola do naszej tablicy. Na wszelki wypadek ustawiamy również domyślną wartość pola. Nie jest to konieczne – bez linii #8
select po prostu automatycznie wybierze pierwszy wybór w tablicy (‘czerwony’).
Powyższy kod wyrenderuje pole tak:
Wybór zależy od Ciebie, jedyne, o co musisz zadbać, to dostarczenie odpowiedniej tablicy klucz + wartość do choices
elementu „ ” pola. Jako podstawowy przykład ten przykład kodu pokazuje, w jaki sposób można zmienić normalne pole wyboru w wybór postów.
Powyższy przykład kodu powoduje, że zapytanie o post pobiera wszystkie strony i wypełnia tablicę wyboru identyfikatorami postów jako kluczami i tytułami postów jako wartościami. To tylko przykład; jeśli zamierzasz dokonać wyboru postów, ACF oferuje inne typy pól specjalnie do tego celu.