add_row()ACF 5.2.3

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

Хуков нет.

Возвращает

(true|false). Обновленное количество строк (count) или false при ошибке.

Использование

add_row( $selector, $value, $post_id )
$selector(строка) (обязательный)
Имя поля или ключ (key).
$value(массив)
Строка с новыми данными.
По умолчанию: false
$post_id(число/разное)
ID поста для сохранения данных.
По умолчанию: false (текущий пост)

Примеры

2

#1 Добавление новой строки, используя имена полей (name)

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

$row = array(
	'image' => 123,
	'alt'   => 'Another great sunset',
	'link'  => 'http://website.com'
);

add_row( 'images', $row );
0

#2 Добавление новой строки, используя ключи полей (key)

В этом примере показано, как добавить новую строку данных в существующее поле Повторителя, используя ключи вместо имен. Поле Повторителя такое же, как в примере выше.

Аналлогично функции update_field(), использование ключа поля, а не его имени позволяет ACF правильно находить поле, если сохраняемое значение не существует.

$row = array(
	'field_560389746a525' => 123,
	'field_560389746a524' => 'Another great sunset',
	'field_560389746a528' => 'http://website.com'
);

add_row( 'field_560389746a51f', $row );

Список изменений

С версии 5.2.3 Введена.

Код add_row() ACF 6.0.4

function add_row( $selector, $row = false, $post_id = false ) {

	// filter post_id
	$post_id = acf_get_valid_post_id( $post_id );

	// get field
	$field = acf_maybe_get_field( $selector, $post_id, false );

	// bail early if no field
	if ( ! $field ) {
		return false;
	}

	// get raw value
	$value = acf_get_value( $post_id, $field );

	// ensure array
	$value = acf_get_array( $value );

	// append
	$value[] = $row;

	// Paginated repeaters should be saved normally.
	$field['pagination'] = false;

	// update value
	acf_update_value( $value, $post_id, $field );

	// return
	return count( $value );

}