acf/include_fieldsхук-событиеACF 5.0.0

Срабатывает во время инициализации ACF после загрузки встроенных типов полей и правил расположения. Предназначен для регистрации локальных групп и полей через PHP.

Это рекомендуемое место для вызова acf_add_local_field_group(), acf_add_local_field() и аналогичных функций регистрации полей.

Хук подходит, когда группы полей:

  • хранятся в теме или плагине;
  • должны переноситься между окружениями вместе с кодом;
  • не должны редактироваться через интерфейс ACF;
  • создаются динамически на основе PHP-конфигурации.

ACF использует этот хук в коде, генерируемом инструментом экспорта групп полей.

В отличие от события acf/init, этот хук предназначен именно для подключения полей. acf/init срабатывает позже, после регистрации локальных полей, типов записей и таксономий ACF.

Официальная документация: Register fields via PHP.

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

add_action( 'acf/include_fields', 'wp_kama_acf_include_fields_action' );

/**
 * Function for `acf/include_fields` action-hook.
 * 
 * @param int $ACF_FIELD_API_VERSION ACF_FIELD_API_VERSION The field API version.
 *
 * @return void
 */
function wp_kama_acf_include_fields_action( $ACF_FIELD_API_VERSION ){
	// action...
}
$field_api_version(int)
Версия API полей ACF. В актуальных версиях ACF передаётся значение константы ACF_FIELD_API_VERSION.

Примеры

#1 Регистрация группы полей

Добавим текстовое поле для обычных записей.

add_action( 'acf/include_fields', 'wpkama_register_post_fields' );

function wpkama_register_post_fields() {

	acf_add_local_field_group(
		[
			'key'    => 'group_post_details',
			'title'  => 'Данные записи',
			'fields' => [
				[
					'key'   => 'field_post_subtitle',
					'label' => 'Подзаголовок',
					'name'  => 'post_subtitle',
					'type'  => 'text',
				],
			],
			'location' => [
				[
					[
						'param'    => 'post_type',
						'operator' => '==',
						'value'    => 'post',
					],
				],
			],
		]
	);
}

#2 Получение версии API полей

Аргумент хука можно использовать, если код регистрации зависит от версии API ACF.

add_action( 'acf/include_fields', 'wpkama_register_fields', 10, 1 );

function wpkama_register_fields( $field_api_version ) {
	if ( $field_api_version < 5 ) {
		return;
	}

	acf_add_local_field_group(
		[
			'key'      => 'group_page_settings',
			'title'    => 'Настройки страницы',
			'fields'   => [],
			'location' => [
				[
					[
						'param'    => 'post_type',
						'operator' => '==',
						'value'    => 'page',
					],
				],
			],
		]
	);
}

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

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

Где вызывается хук

ACF::init()
acf/include_fields
acf/acf.php 453
do_action( 'acf/include_fields', ACF_FIELD_API_VERSION );

Где используется хук в Advanced Custom Fields PRO

acf/includes/admin/tools/class-acf-admin-tool-export.php 404
echo "add_action( 'acf/include_fields', function() {\r\n";
acf/includes/local-fields.php 743
add_action( 'acf/include_fields', '_acf_do_prepare_local_fields', 0, 1 );
acf/includes/local-json.php 65
add_action( 'acf/include_fields', array( $this, 'include_fields' ) );
acf/pro/acf-pro.php 63
add_action( 'acf/include_fields', array( $this, 'include_options_pages' ) );