Як динамічно заповнювати розширені настроювані поля
З деяким кодом PHP дуже легко динамічно заповнювати значення або варіанти розширених настроюваних полів (ACF). Ви можете зробити це для будь-яких типів вводу, включаючи вибір радіо, прапорців тощо. У цій публікації ми розглянемо, як.
Фільтр
Advanced Custom Fields пропонує фільтр під назвою [acf/load_field](https://www.advancedcustomfields.com/resources/acf-load_field/)
. Цей фільтр можна використовувати різними способами. Або відфільтруйте acf/load_field
його, щоб застосувати його до всіх типів полів, або додайте код у свою підключену функцію, щоб визначити, який тип або назву поля вам потрібні. Або ви можете вказати тип поля (acf/load_field/type=<type>
), назву (acf/load_field/name=<name>
) або ключ (acf/load_field/key=<key>
).
Припустімо, ми створюємо текстове поле так:
Ми могли б націлити це на acf/load_field/name=dyn_pop_example
(націлювання лише на це конкретне поле), acf/load_field/type=text
(застосовується до всіх полів типу text) або acf/load_field
(застосовується до всіх полів будь-якого типу чи імені). Використовуючи останні два фільтри, ви, звичайно, можете вказати цільову функцію за допомогою певної інформації поля, наприклад імені. Кожне поле в ACF також отримує унікальний ключ, але вони приховані та здебільшого призначені для внутрішнього використання ACF.
Фільтр забезпечує одну змінну; масив поля. Цей масив надає всю інформацію про поточне поле. Ви просто змінюєте інформацію в масиві та повертаєте змінений масив полів. Залежно від типу поля елементи в масиві відрізняються. Наприклад, типи полів із множинним вибором, такі як select і radioboxes, матимуть елемент масиву «choices
», якого не матимуть поля типу text. Я рекомендую вам виконати var_dump()
наданий масив, щоб побачити, до якої інформації ви маєте доступ.
Давайте почнемо розглядати справжній код!
Населення: прості приклади
Встановлення значення за умовчанням для введення тексту виглядатиме приблизно так:
add_filter('acf/load_field/name=dyn_pop_example', function($field) {
$field['default_value'] = __('This is default value', 'txtdomain');
return $field;
});
Ми націлюємо наше текстове введення за назвою dyn_pop_example
та встановлюємо його значення за замовчуванням (ключ ‘ default_value
‘) на рядок за власним вибором. Тоді поле буде відображено так:
Ви можете змінити будь-які налаштування поля. У наведеному нижче прикладі ми встановлюємо заповнювач тексту та інструкції:
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;
});
Що зробить поле візуалізації так:
Заповнити варіанти
Якщо ви бажаєте динамічно заповнювати вибір поля вибору, перемикача або поля прапорця, це можна зробити в ключовому елементі масиву ‘ choices
‘. Цей choices
елемент «» застосовується до всіх полів типу select, radio і checkbox.
Елемент " choices
" має бути масивом пар ключ + значення. Ключі — це значення (які будуть збережені), а значення — це мітка, яка з’являється як вибір.
Припустімо, ми змінимо наше поле на вибране. Ви можете залишити варіанти порожніми, оскільки вони будуть встановлені через наш код.
Для заповнення параметрів вибору ми робимо це так:
У рядку #2 - #6
ми просто визначаємо масив варіантів. Змініть це відповідно до ваших потреб. У рядку #7
ми призначаємо вибір поля нашому масиву. Для гарної міри ми також встановили значення поля за замовчуванням. Це не обов’язково – без рядка #8
вибір просто автоматично вибере перший вибір у масиві («червоний»).
Наведений вище код відобразить поле так:
Вибір залежить від вас, все, про що вам потрібно подбати, це надати правильний масив ключ + значення для choices
елемента поля «». Як базовий приклад цей приклад коду показує, як ви можете перетворити звичайне поле вибору на вибір дописів.
У наведеному вище прикладі коду створюється запит на публікацію, який отримує всі сторінки та заповнює масив вибору ідентифікаторами публікацій як ключами та заголовками публікацій як значеннями. Це лише як приклад; якщо ви збираєтеся зробити вибір публікацій ACF пропонує інші типи полів спеціально для цього.