delete_sub_field()

Обзор

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

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

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

Параметры

delete_sub_field( $selector, [$post_id] );
  • $selector (смешанный) (обязательное) Имя или ключ подполя, или массив родителей и номера строки.
  • $post_id (число) ID поста для которого будет сохраняться значение.

Возвращает

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

Примеры

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

Будет выполнен обход поля повторителя и удаление значения подполя. В этом примере показывается, как использовать функцию delete_sub_field() внутри цикла have_rows().

<?php 

if( have_rows('repeater') ) {

	while( have_rows('repeater') ) {

		the_row();
		
		if( get_sub_field('color') == 'красный' ) {
			
			delete_sub_field('color');
			
		}
		
	}

}

?>

Вне цикла have_rows()

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

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

В примере показано как удалить подполе первой строки повторителя.

<?php 

delete_sub_field( array('repeater', 1, 'color') );

?>

Вложенные поля повторителя

Функция delete_sub_field() будет корректно работать с вложенными полями повторителя как внутри, так и снаружи цикла have_rows(). Этот пример продемонстрирует, как это возможно в обоих случаях.

<?php 

// повторитель родитель
if( have_rows('repeater') ) {

	while( have_rows('repeater') ) {

		the_row();

		// повторитель дочерний
		if( have_rows('sub_repeater') ) {

			while( have_rows('sub_repeater') ) {

				the_row();

				delete_sub_field('sub_sub_field');

			}
			// while

		}
		// if

	}
	// while

}
// if

?>
<?php 

delete_sub_field( array('repeater', 1, 'sub_repeater', 1, 'sub_sub_field') );

?>

Похожие