Массовое проставление текста/картинок в повторителе ACF

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

Не так давно мне понадобился способ, с помощью которого я мог бы массово проставить контент в поля ACF. На моём сайте было множество разных страниц, в которых были как обычные поля, так и поля повторителей или групп.

Способ довольно простой, поэтому делюсь им и с вами.

Начнём с повторителей и групп. К примеру, мне нужно массово проставить картинки на 100 разных страницах в одно и тоже поля повторителя. Открываем function.php и добавляем в самый низ:

function add_images_to_repeater_field_on_all_pages() {
    $args = array(
        'post_type' => 'page', // Укажите тип записи, к которому применяется изменение
        'posts_per_page' => -1 // Получить все страницы
    );
    
    $pages = get_posts($args);
    
    foreach ($pages as $page) {
        $image_ids = array(10, 20, 30); // ID изображений, которые нужно добавить в поле повторителя
        $image_data = array();
        
        foreach ($image_ids as $image_id) {
            $image_data[] = array(
                'image' => $image_id // Подполе для изображения
            );
        }
        
        update_field('имя_поля_повторителя', $image_data, $page->ID);
    }
}

add_action('init', 'add_images_to_repeater_field_on_all_pages');

В строчке $image_ids можно указать ID изображений (изображения предварительно загружаем во встроенный медиазагрузчик WP).

В строчке update_field(‘имяполяповторителя‘, $image_data, $page->ID); указываем имя повторителя ACF.

Далее смотрим на эту строчку – ‘image’ => $image_id, тут вместо image указываем названия поля изображения в поле с повторителем. Сохраняем, и если всё сделали правильно наблюдаем результат.

Теперь аналогичный пример с текстовыми полями. Открываем function.php и добавляем туда:

function add_repeater_field_to_all_pages() {
    $args = array(
        'post_type' => 'page', // Укажите тип записи, к которому применяется изменение
        'posts_per_page' => -1 // Получить все страницы
    );
    
    $pages = get_posts($args);
    
    foreach ($pages as $page) {
        $repeater_data = array(
            array(
                'sub_field_1' => 'Значение 1', // Значения для подполей
                'sub_field_2' => 'Значение 2',
                // Добавьте здесь другие подполя и значения
            )
        );
        
        update_field('имя_поля_повторителя', $repeater_data, $page->ID);
    }
}

add_action('init', 'add_repeater_field_to_all_pages');

Тут всё аналогично первому примеру. В поле update_field(‘имяполяповторителя’, $repeater_data, $page->ID); указываем названия поля повторителя, затем в этих полях:

‘sub_field_1’ => ‘Значение 1’, // Значения для подполей
‘sub_field_2’ => ‘Значение 2’,

указываем названия дочерних полей повторителя, где мы хотим проставить текст.

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии