Страницы настроек предоставляют интерфейс для глобальных настроек сайта (логотип, текст в подвале, ссылки на социальные сети и т.д.). Требуется лицензия PRO. Значения доступны с помощью get_field( 'field_name', 'options' ).
Field Forge поддерживает три пути регистрации — выберите тот, который подходит вашему рабочему процессу. Они сосуществуют; значения, хранящиеся под данным слагом, доступны независимо от того, как была зарегистрирована страница.
| Путь | Источник | Когда использовать |
|---|---|---|
Админ UI (Field Forge > Options Pages) | Таблица wp_fieldforge_options_pages | Менеджеры контента хотят добавлять или переименовывать страницы, не касаясь кода |
Авто-регистрация из правила местоположения группы полей (options_page == ) | Определение группы полей | Страница содержит ровно одну группу полей; вам не нужна пользовательская иконка или позиция |
fieldforge_add_options_page([...]) PHP API | Код functions.php / плагина | Регистрация должна быть включена в тему; вы хотите полный контроль над иконкой, позицией, возможностями, родительским слагом |
fieldforge_add_options_page( $args )
Полная справка по параметрам:
| Параметр | Тип | По умолчанию | Описание | |
|---|---|---|---|---|
page_title | string | 'Options' | Заголовок страницы, отображаемый вверху | |
menu_title | string | 'Options' | Метка меню в боковой панели администратора | |
menu_slug | string | 'fieldforge-options' | Уникальный слаг для URL страницы | |
capability | string | 'manage_options' | Необходимая возможность | |
parent_slug | string | '' | Родительский слаг меню (пусто = верхний уровень) | |
icon_url | string | 'dashicons-admin-generic' | Класс Dashicon или URL изображения | |
position | int\ | null | null | Позиция меню |
Страница настроек верхнего уровня
add_action( 'init', function() {
if ( ! function_exists( 'fieldforge_add_options_page' ) ) {
return;
}
fieldforge_add_options_page( [
'page_title' => 'Theme Settings',
'menu_title' => 'Theme Settings',
'menu_slug' => 'theme-settings',
'icon_url' => 'dashicons-admin-customizer',
'position' => 2,
] );
} );Подстраницы под родительской
add_action( 'init', function() {
if ( ! function_exists( 'fieldforge_add_options_page' ) ) {
return;
}
fieldforge_add_options_page( [
'page_title' => 'Site Options',
'menu_title' => 'Site Options',
'menu_slug' => 'site-options',
'icon_url' => 'dashicons-admin-site',
] );
fieldforge_add_options_page( [
'page_title' => 'Header Settings',
'menu_title' => 'Header',
'menu_slug' => 'site-options-header',
'parent_slug' => 'site-options',
] );
fieldforge_add_options_page( [
'page_title' => 'Footer Settings',
'menu_title' => 'Footer',
'menu_slug' => 'site-options-footer',
'parent_slug' => 'site-options',
] );
} );Доступ к значениям страницы настроек
$logo = get_field( 'site_logo', 'options' );
$phone = get_field( 'site_phone', 'options' );
// Repeater on options page
if ( have_rows( 'business_hours', 'options' ) ) :
echo '<table class="hours">';
while ( have_rows( 'business_hours', 'options' ) ) : the_row();
echo '<tr><td>' . esc_html( get_sub_field( 'day' ) ) . '</td>';
echo '<td>' . esc_html( get_sub_field( 'hours' ) ) . '</td></tr>';
endwhile;
echo '</table>';
endif;REST API для страниц, управляемых UI
Страницы, добавленные в админ UI, находятся в wp_fieldforge_options_pages и доступны для безголового / скриптового управления (источники PHP-API и правила группы полей НЕ находятся в этой таблице и доступны только для чтения через эту конечную точку). Все маршруты требуют аутентифицированного запроса с manage_options.
GET /wp-json/fieldforge/v1/options-pages # list active rows (?include_deleted=1 to see soft-deleted)
GET /wp-json/fieldforge/v1/options-pages/{id} # one row
POST /wp-json/fieldforge/v1/options-pages # create — body: { page_title, menu_slug, capability, parent_slug, position, icon_url, ... }
PUT /wp-json/fieldforge/v1/options-pages/{id} # update — same body shape
DELETE /wp-json/fieldforge/v1/options-pages/{id} # soft-delete (status='deleted')Валидация соответствует админ UI: page_title и menu_slug обязательны, слаг должен быть уникальным, зарезервированные слаги Field Forge (например, fieldforge-settings) отклоняются. Ошибки возвращают JSON в форме WP_Error с code и message.
Интеграция Lang Forge
Когда Lang Forge активен, значения страниц настроек хранятся по языкам. Со стороны шаблона, get_field() автоматически возвращает значение для текущего языка.
// These calls automatically return the correct language value
$logo = get_field( 'site_logo', 'options' );
$phone = get_field( 'site_phone', 'options' );
$cta = get_field( 'cta_text', 'options' );
// Internal storage:
// Default (EN): option_page = 'site-options'
// French: option_page = 'site-options:fr'
// Spanish: option_page = 'site-options:es'—