delete_sub_row()

Обзор

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

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

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

Параметры

delete_sub_row($selector, $row, [$post_id])
  • $selector (string|array) (Обязательный) Имя или ключ подчинённого поля либо массив родительских элементов и номеров строк.
  • $row (int) (Обязательный) Номер строки для обновления.
  • $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();

        // Удаляем первое изображение этого сотрудника.
        delete_sub_row('images', 1);
    }
}

Удаление подчинённой строки вне цикла have_rows()

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

См. примечания об индексном смещении.

// Удаляем первое изображение первого сотрудника.
delete_sub_row( array('staff_members', 1, 'images'), 1 );

// Обновляем второе изображение первого сотрудника.
delete_sub_row( array('staff_members', 1, 'images'), 2 );

Примечания

Индексное смещение

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

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

functions.php

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

Обновлено: 30.09.2026