Les pages d’options fournissent une interface utilisateur pour les paramètres globaux du site (logo, texte de pied de page, liens sociaux, etc.). Nécessite une licence PRO. Les valeurs sont accessibles en utilisant get_field( 'field_name', 'options' ).
Field Forge prend en charge trois chemins d’enregistrement — choisissez celui qui convient le mieux à votre flux de travail. Ils coexistent ; les valeurs stockées contre un slug donné sont accessibles indépendamment de la manière dont la page a été enregistrée.
| Chemin | Source | Quand l’utiliser |
|---|---|---|
Interface Admin (Field Forge > Options Pages) | Table wp_fieldforge_options_pages | Les gestionnaires de contenu souhaitent ajouter ou renommer des pages sans toucher au code |
Auto-enregistrement à partir d’une règle de localisation de groupe de champs (options_page == ) | Définition du groupe de champs | La page héberge exactement un groupe de champs ; vous n’avez pas besoin d’une icône ou d’une position personnalisée |
fieldforge_add_options_page([...]) API PHP | Code functions.php / plugin | L’enregistrement doit être inclus avec le thème ; vous souhaitez un contrôle total sur l’icône, la position, la capacité, le slug parent |
fieldforge_add_options_page( $args )
Référence Complète des Paramètres :
| Paramètre | Type | Par défaut | Description | |
|---|---|---|---|---|
page_title | string | 'Options' | Titre de la page affiché en haut | |
menu_title | string | 'Options' | Étiquette de menu dans la barre latérale admin | |
menu_slug | string | 'fieldforge-options' | Slug unique pour l’URL de la page | |
capability | string | 'manage_options' | Capacité requise | |
parent_slug | string | '' | Slug du menu parent (vide = niveau supérieur) | |
icon_url | string | 'dashicons-admin-generic' | Classe Dashicon ou URL de l’image | |
position | int\ | null | null | Position du menu |
Page d’Options de Niveau Supérieur
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,
] );
} );Sous-Pages Sous un Parent
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',
] );
} );Accéder aux Valeurs de la Page d’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;API REST pour les pages gérées par l’UI
Les pages ajoutées dans l’interface admin vivent dans wp_fieldforge_options_pages et sont exposées pour une gestion sans tête / scriptée (les sources API PHP et règle de groupe de champs NE SONT PAS dans ce tableau et sont en lecture seule via ce point de terminaison). Tous les itinéraires nécessitent une demande authentifiée avec 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')La validation correspond à l’interface admin : page_title et menu_slug requis, le slug doit être unique, les slugs réservés de Field Forge (par exemple fieldforge-settings) sont rejetés. Les erreurs retournent un JSON en forme de WP_Error avec code et message.
Intégration Lang Forge
Lorsque Lang Forge est actif, les valeurs des pages d’options sont stockées par langue. Du côté du modèle, get_field() retourne automatiquement la valeur pour la langue actuelle.
// 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'—