Описание
Получает все группы полей ACF, отфильтрованные по аргументам WP_Query, и возвращает их в виде массива.
Не следует путать эту функцию с get_fields(), которая возвращает массив значений полей для конкретной записи, get_field_objects(), которая возвращает все поля и настройки, но не разделяет их по группам полей, или acf_get_fields(), которая получает все поля из конкретной группы полей.
Параметры
acf_get_field_groups( $filter );
$filter(array) (Необязательно) Массив аргументов для фильтрации запроса записей.
Примеры
Базовое использование
В этом примере показано, как вернуть все группы полей, связанные с ID записи, в виде массива. Он получает все группы полей, применяет к ним фильтр, а затем проверяет правила расположения для каждой группы полей.
ID записи нужно передать в качестве аргумента, иначе группы полей не будут возвращены. Вам нужно заменить $post_id на фактический ID записи.
$groups = acf_get_field_groups( array( 'post_id' => $post_id ) );
Расширенное использование
В этом примере показано, как динамически получать группы полей на основе типа записи и шаблона текущей страницы, а затем использовать полученные группы полей для формирования собственной структуры страницы на основе групп полей, назначенных записи.
Допустим, у вас есть пользовательский тип записи «portfolio», и вы хотите отображать разный макет для каждого элемента portfolio в зависимости от назначенных ему групп полей. Вы можете использовать acf_get_field_groups(), чтобы получить группы полей, а затем пройти по ним циклом и сформировать собственный макет.
// Получаем ID текущей записи
$post_id = get_the_ID();
// Получаем все группы полей, связанные с текущей записью
$field_groups = acf_get_field_groups(array('post_id' => $post_id));
// Проходим по каждой группе полей
foreach ($field_groups as $field_group) {
// Получаем ID группы полей
$field_group_id = $field_group['ID'];
// Получаем поля внутри группы полей
$fields = acf_get_fields($field_group_id);
// Проверяем, есть ли у группы полей определённый макет
if ($field_group['layout'] == 'gallery') {
// Проходим по каждому полю и выводим макет галереи
foreach ($fields as $field) {
if ($field['type'] == 'gallery') {
// Выводим поле галереи
the_field($field['name']);
}
}
} elseif ($field_group['layout'] == 'video') {
// Проходим по каждому полю и выводим макет видео
foreach ($fields as $field) {
if ($field['type'] == 'video') {
// Выводим поле видео
the_field($field['name']);
}
}
}
}
В этом примере мы сначала получаем ID текущей записи с помощью get_the_ID(). Затем используем acf_get_field_groups(), чтобы получить все группы полей, связанные с текущей записью. Мы проходим по каждой группе полей и получаем поля внутри неё с помощью acf_get_fields(). Наконец, мы проверяем макет каждой группы полей и отображаем соответствующий макет на основе типов полей внутри группы.
Примечания
Используйте эту функцию с осторожностью, так как это та же функция, которую ACF использует для получения групп полей и полей.
Функция кэширует результаты, поэтому поля не нужно извлекать из базы данных каждый раз, но из-за кэширования изменения в них не обновляются. Если вы хотите изменить настройки группы полей или поля после вызова этой функции, вам нужно вручную очистить закэшированные версии.
Обновлено: 01.06.2026