Обзор
Обновляет строку данных в существующем значении подполей Repeater или Flexible Content.
Эту функцию можно использовать внутри или за пределами цикла have_rows(). При использовании внутри цикла для обновления значения подполя будет выбрана текущая строка. При использовании за пределами цикла необходимо указать строки и родительские поля, чтобы обратиться к правильному значению.
Обратите внимание: эта функция используется для изменения значения подполя. Чтобы изменить значение родительского поля, используйте функцию update_row().
Параметры
update_sub_row($selector, $row, $value, [$post_id])$selector(string|array) (Обязательный) Имя или ключ подполя либо массив родительских элементов и номеров строк.$row(int) (Обязательный) Номер строки для обновления.$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');
// Обновляем первое изображение этого сотрудника.
$value = array(
'image' => 123,
'alt' => "Первое фото $name",
'link' => 'http://website.com'
);
update_sub_row('images', 1, $value);
}
}Обновление подстроки за пределами цикла have_rows()
В этом примере показано, как обновить строку данных за пределами цикла have_rows(). Здесь параметру $selector передаётся массив, содержащий сочетание имён полей и номеров строк. Этот массив должен отражать связь от родительских элементов к дочерним слева направо, с разделением уровня номером строки.
См. примечания об индексном смещении.
// Обновляем первое изображение первого сотрудника.
$value = array(
'image' => 123,
'alt' => "Первое фото первого сотрудника",
'link' => 'http://website.com'
);
update_sub_row( array('staff_members', 1, 'images'), 1, $value );
// Обновляем второе изображение первого сотрудника.
update_sub_row( array('staff_members', 1, 'images'), 2, $value );Примечания
Индексное смещение
При обращении к подполю с использованием определённого номера строки помните, что нумерация строк начинается с 1, а не с 0. Это означает, что первая строка имеет индекс 1, вторая — индекс 2 и так далее.
Чтобы начать индексацию с 0, используйте настройку row_index_offset следующим образом.
functions.php
add_filter('acf/settings/row_index_offset', '__return_zero');Обновлено: 30.09.2026