✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Как динамически заполнять расширенные настройки настраиваемых полей

44

С некоторым 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(применяется ко всем полям текстового типа) или 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‘ должен быть массивом пар ключ + значение. Ключи — это значения (которые будут сохранены), а значения — это метка, которая появляется в качестве выбора.

Предположим, мы изменили наше поле на select. Вы можете оставить варианты пустыми, так как они будут установлены с помощью нашего кода.

Как динамически заполнять расширенные настройки настраиваемых полей

Для заполнения выбора выбора мы делаем это следующим образом:

add_filter('acf/load_field/name=dyn_pop_example', function($field) {
    $choices = [
        'red' => __('Red Color', 'txtdomain'),
        'blue' => __('Blue Color', 'txtdomain'),
        'green' => __('Green Color', 'txtdomain')
    ];
    $field['choices'] = $choices;
    $field['default_value'] = 'blue';
    return $field;
});

В строке #2 - #6мы просто определяем массив вариантов. Измените это в соответствии с вашими потребностями. В строке #7мы присваиваем выбор поля нашему массиву. На всякий случай мы также устанавливаем значение поля по умолчанию. В этом нет необходимости — без строки #8выбор просто автоматически выберет первый вариант в массиве («красный»).

Приведенный выше код отобразит поле следующим образом:

Как динамически заполнять расширенные настройки настраиваемых полей

Выбор за вами, все, о чем вам нужно позаботиться, это предоставить правильный массив ключей + значений для choicesэлемента поля ‘ ‘. В качестве базового примера этот пример кода показывает, как вы можете превратить обычное поле выбора в выбор сообщений.

add_filter('acf/load_field/name=dyn_pop_example', function($field) {
    $posts = new WP_Query([
        'post_type' => 'page',
        'posts_per_page' => -1
    ]);
    $choices = [];
    while ($posts->have_posts()) { 
        $posts->the_post();
        $choices[get_the_ID()] = get_the_title();
    }
    wp_reset_query();
    $field['choices'] = $choices;
    return $field;
});

В приведенном выше примере кода создается почтовый запрос, извлекающий все страницы, и заполняет массив выбора идентификаторами сообщений в качестве ключей и заголовками сообщений в качестве значений. Это просто как пример; если вы собираетесь делать выбор постов, ACF предлагает другие типы полей специально для этого.

Источник записи: awhitepixel.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее