Функции и значения
Имена функций
У каждой функции два имени:
- с префиксом
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().