add_sub_row()

Обзор

Добавляет новую строку данных в значение подполя Repeater или Flexible Content.

Эту функцию можно использовать внутри или вне цикла have_rows(). При использовании внутри цикла для обновления значения подполя будет использована текущая строка. При использовании вне цикла необходимо указать строки и родительские поля, чтобы обратиться к нужному значению.

Обратите внимание: эта функция используется для изменения значения подполя. Чтобы изменить значение родительского поля, используйте функцию add_row().

Параметры

add_sub_row($selector, $value, [$post_id]);
  • $selector (string|array) (Обязательный) Имя или ключ подполя либо массив родительских полей и номеров строк.
  • $value (array) (Обязательный) Данные новой строки.
  • $post_id (mixed) (Необязательный) ID записи, в которой сохраняется значение. По умолчанию используется текущая запись.

Результат

(bool) Возвращает true при успешном обновлении и false в случае ошибки.

Журнал изменений

  • Добавлена в версии 5.4.7

Добавление новой вложенной строки внутри цикла have_rows()

В этом примере показано, как добавить новую строку данных в существующее вложенное поле repeater с именем «images». Это вложенное поле repeater содержит 3 подзначения («image», «alt», «link»).

// Перебираем всех сотрудников.
if( have_rows('staff_members') ) {
    while( have_rows('staff_members') ) {
        the_row();

        // Получаем имя этого сотрудника.
        $name = get_sub_field('name');

        // Добавляем новую строку к изображениям этого сотрудника.
        $row = array(
            'image' => 123,
            'alt'   => "Еще одна фотография $name",
            'link'  => 'http://website.com'
        );
        add_sub_row('images', $row);
    }
}

Добавление новой вложенной строки вне цикла have_rows()

В этом примере показано, как добавить новую строку данных вне цикла have_rows(). Здесь параметру $selector передается массив, содержащий сочетание имен полей и номеров строк. Массив следует читать слева направо: связь от родительских полей к дочерним разделяется номером строки.

Дополнительную информацию см. в примечаниях об индексе.

// Обновляем изображения только первого сотрудника.
$row = array(
    'image' => 123,
    'alt'   => "Еще одна фотография первого сотрудника",
    'link'  => 'http://website.com'
);
add_sub_row( array('staff_members', 1, 'images'), $row );

Примечания

Смещение индекса

При обращении к подполю по определенному номеру строки учитывайте, что нумерация строк начинается с 1, а не с 0. Это означает, что первая строка имеет индекс 1, вторая — индекс 2 и так далее.

Чтобы начать нумерацию индексов с 0, используйте настройку row_index_offset следующим образом.

functions.php

add_filter('acf/settings/row_index_offset', '__return_zero');

Обновлено: 30.09.2026