update_sub_row()

Обзор

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

История изменений

  • Добавлено в v5.4.7

Параметры

update_sub_row( $selector, $i, $row, $post_id )
  • $selector (смешанный) (обязательное) Имя или ключ подполя, или массив родителей и номера строки.
  • $i (число) (обязательное) Номер строки, который нужно изменить.
  • $row (массив) (обязательное) Новое значение строки для сохранении в БД.
  • $post_id (число) ID поста для которого будет сохраняться значение.

Возвращает

Функция возвращает true в случае успеха и false при неудаче.

Примечания

  • Строки начинаются с 1 (не с 0). К примеру, первая строка значений будет $i = 1
  • Можно изменить индекс с которого начинаются строки. Для этого воспользуйтесь row_index_offset.

Примеры

В следующих примерах используется поле повторителя под названием «Parent», которое содержит дочерний повторитель. Вот иерархия подполей:

r1 (повторитель)
– r2 (повторитель)
— t1 (текст)
— t2 (текст)

Внутри цикла have_rows()

Этот пример будет обходит поле повторителя (r1) и обновляет первую строку поля вложенного повторителя (r2).

<?php 

if( have_rows('r1') ) {

	$i = 0;
	
	while( have_rows('r1') ) {

		the_row();
		
		$i++;
		
		$row = array(
			't1' => 'r1 (row ' . $i . ') => r2 (row 1) => t1',
			't2' => 'r1 (row ' . $i . ') => r2 (row 1) => t2'
		);

		update_sub_row('r2', 1, $row);

	}

}

?>

Вне цикла have_rows()

В этом примере будет обновлено значение подполя вне цикла has_rows(). Обратите внимание, что параметру $selector присваивается массив, содержащий комбинацию имен полей и номеров строк. Этот массив должен читать слева направо, отношения родителей с детьми, дополненные номером строки.

<?php 

// обновляем родительскую строку 1 => подполе 1
$row1 = array(
	't1' => 'r1 (row 1) => r2 (row 1) => t1',
	't2' => 'r1 (row 1) => r2 (row 1) => t2'
);

update_sub_row( array('r1', 1, 'r2'), 1, $row1 );


// обновляем родительскую строку 2 => подполе 1
$row2 = array(
	't1' => 'r1 (row 2) => r2 (row 1) => t1',
	't2' => 'r1 (row 2) => r2 (row 1) => t2'
);

update_sub_row( array('r1', 2, 'r2'), 1, $row2 );


// обновляем родительскую строку 2 => подполе 2
$row3 = array(
	't1' => 'r1 (row 2) => r2 (row 2) => t1',
	't2' => 'r1 (row 2) => r2 (row 2) => t2'
);

update_sub_row( array('r1', 2, 'r2'), 2, $row3 );

?>

Похожие