18. Страницы настроек | Field Forge - Произвольные поля, созданные для скорости
Скачать Войти

18. Страницы настроек

Страницы настроек предоставляют интерфейс для глобальных настроек сайта (логотип, текст в подвале, ссылки на социальные сети и т.д.). Требуется лицензия 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_titlestring'Options'Заголовок страницы, отображаемый вверху
menu_titlestring'Options'Метка меню в боковой панели администратора
menu_slugstring'fieldforge-options'Уникальный слаг для URL страницы
capabilitystring'manage_options'Необходимая возможность
parent_slugstring''Родительский слаг меню (пусто = верхний уровень)
icon_urlstring'dashicons-admin-generic'Класс Dashicon или URL изображения
positionint\nullnullПозиция меню

Страница настроек верхнего уровня

php
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,
    ] );
} );

Подстраницы под родительской

php
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',
    ] );
} );

Доступ к значениям страницы настроек

php
$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.

text
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() автоматически возвращает значение для текущего языка.

php
// 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'

ИИ-ассистент Forge Онлайн

Привет! Я ИИ-ассистент Field Forge. Спрашивайте меня о чём угодно по плагину — настройка, возможности, устранение неполадок или разработка.

Только что
На базе Forge AI · Просмотр документации