Skip to content

Функции и значения ​

Имена функций ​

У каждой функции два имени:

  • с префиксом wpff_: wpff_get_field(), wpff_have_rows() и т. д. Доступны всегда.
  • имена ACF: get_field(), have_rows() и т. д. Объявляются, только если сам ACF не активен.

Отключить имена ACF: define( 'WPFF_ACF_COMPAT', false ); или фильтр wpff/acf_compat.

Аргумент $post_id ​

$post_id понимает форматы ACF:

  • ID записи;
  • 'term_5' (или 'category_5');
  • 'user_3';
  • 'comment_7';
  • 'option' / 'options';
  • ключ хранения страницы настроек, например 'site_settings';
  • объект WP_Post, WP_Term или WP_User.

Без аргумента функции работают с текущей записью, а внутри шаблона блока — с текущим блоком.

Регистрация из кода ​

php
add_action( 'wpff/init', function () {
	wpff_add_local_field_group( array(
		'key'      => 'group_book',
		'title'    => 'Книга',
		'fields'   => array(
			array( 'key' => 'field_book_isbn', 'name' => 'isbn', 'label' => 'ISBN', 'type' => 'text', 'required' => 1 ),
			array(
				'key'           => 'field_book_chapters',
				'name'          => 'chapters',
				'label'         => 'Главы',
				'type'          => 'repeater',
				'pagination'    => 1,
				'rows_per_page' => 20,
				'sub_fields'    => array(
					array( 'key' => 'field_book_ch_title', 'name' => 'title', 'label' => 'Название', 'type' => 'text' ),
				),
			),
		),
		'location' => array( array( array( 'param' => 'post_type', 'operator' => '==', 'value' => 'book' ) ) ),
	) );

	wpff_add_options_page( array( 'page_title' => 'Настройки темы', 'menu_slug' => 'theme-settings' ) );

	wpff_register_block_type( array(
		'name'            => 'hero',
		'title'           => 'Hero',
		'render_template' => get_template_directory() . '/blocks/hero.php',
	) );
} );

Ключи полей. Ключ поля (key) можно не указывать: он будет сгенерирован стабильно из ключа группы и имени поля. Но если поле уже хранит данные в ACF, укажите прежний ключ.

Формат ACF. Формат групп совпадает с экспортом ACF, поэтому PHP-код из ACF («Tools → Generate PHP») работает как есть.

Чтение и запись значений ​

ФункцияЧто делает
get_field( $name, $post_id = false, $format = true )Возвращает значение с форматированием по возвращаемому формату поля.
the_field( $name, $post_id )Выводит значение, экранированное wp_kses_post().
get_field_object( $name, $post_id )Возвращает настройки поля и его value.
get_fields( $post_id )Возвращает все значения объекта: имя => значение.
update_field( $name_or_key, $value, $post_id )Записывает значение. Для повторителя — список строк [ [ 'sub' => … ], … ], для гибкого содержимого — строки с acf_fc_layout.
delete_field( $name, $post_id )Удаляет значение, включая подзначения строк.

Хранение ​

Значения хранятся как в ACF:

ЧтоГде
Поле{имя} и _{имя} с ключом поля
Подполя группы{группа}_{подполе}
Строки повторителя{имя} — число строк (у гибкого содержимого — список макетов); значения — {имя}_{i}_{подполе}
Страницы настроекoptions_{имя} в wp_options

Циклы по строкам ​

php
while ( have_rows( 'sections' ) ) : the_row();
	if ( 'gallery' === get_row_layout() ) {
		while ( have_rows( 'slides' ) ) : the_row();   // вложенный повторитель
			echo esc_html( get_sub_field( 'caption' ) );
		endwhile;
	}
	echo get_row_index(); // 1, 2, …
endwhile;

Другие функции для строк (номера строк начинаются с 1):

  • the_sub_field(), get_sub_field_object();
  • get_row( $format ), reset_rows();
  • add_row( $name, $row, $post_id );
  • update_row( $name, $i, $row, $post_id );
  • delete_row( $name, $i, $post_id ).

Настройки ​

wpff_update_setting( $name, $value ) и wpff_get_setting( $name, $default ) хранят настройки на время запроса:

  • вызывайте wpff_update_setting() в теме или плагине при каждой загрузке;
  • настройку можно изменить фильтром wpff/settings/{name};
  • без ACF доступны также acf_update_setting() и acf_get_setting().

GPL-2.0-or-later. Проект не связан с ACF и WP Engine.