Обзор
Эта функция добавляет подполе существующего поля повторителя или гибкого содержимого. Эта функция отличается от add_row(), которая добавляет строку в родительское поле. Эту функцию можно использовать внутри или вне цикла has_rows() для выбора значения подполя, которое вы намерены изменить.
История изменений
- Добавлено в v5.4.7
Параметры
add_sub_row( $selector, $row, $post_id );
- $selector (смешанный) (обязательное) Имя или ключ подполя, или массив родителей и номера строки.
- $row (массив) (обязательное) Новое значение строки для сохранении в БД.
- $post_id (число) ID поста для которого будет сохраняться значение.
Возвращает
Функция возвращает новое значение в случае успеха и false при неудаче.
Примечания
- Строки начинаются с 1 (не с 0). К примеру, первая строка значений будет $i = 1
- Можно изменить индекс с которого начинаются строки. Для этого воспользуйтесь row_index_offset.
Примеры
В следующих примерах используется поле повторителя под названием «Parent», которое содержит дочерний повторитель. Вот иерархия подполей:
r1 (повторитель)
– r2 (повторитель)
— t1 (текст)
— t2 (текст)
Внутри цикла have_rows()
Этот пример будет обходит поле повторителя (r1) и добавляет новую строку поля вложенного повторителя (r2).
<?php
if( have_rows('r1') ) {
while( have_rows('r1') ) {
the_row();
$row = array(
't1' => 'Новое значение для t1',
't2' => 'Новое значение для t2'
);
add_sub_row('r2', $row);
}
}
?>
Вне цикла have_rows()
В этом примере будет добавлено новое значение подполя вне цикла has_rows(). Обратите внимание, что параметру $selector присваивается массив, содержащий комбинацию имен полей и номеров строк. Этот массив должен читать слева направо, отношения родителей с детьми, дополненные номером строки.
<?php
// добавляем родительскую строку 1 => подполе 1
$row1 = array(
't1' => 'r1 (row 1) => r2 (new row) => t1',
't2' => 'r1 (row 1) => r2 (new row) => t2'
);
add_sub_row( array('r1', 1, 'r2'), $row1 );
// добавляем родительскую строку 2 => подполе 2
$row2 = array(
't1' => 'r1 (row 2) => r2 (new row) => t1',
't2' => 'r1 (row 2) => r2 (new row) => t2'
);
add_sub_row( array('r1', 2, 'r2'), $row2 );
?>
Похожие
- Функция: add_row()
- Функция: delete_sub_row()
- Функция: update_sub_row()
- Функция: update_sub_field()