Las páginas de opciones proporcionan una interfaz de usuario para configuraciones a nivel de sitio (logo, texto del pie de página, enlaces sociales, etc.). Requiere licencia PRO. Los valores se acceden utilizando get_field( 'field_name', 'options' ).
Field Forge admite tres rutas de registro: elige la que mejor se adapte a tu flujo de trabajo. Coexisten; los valores almacenados contra un slug dado son accesibles independientemente de cómo se registró la página.
| Ruta | Fuente | Cuándo usar |
|---|---|---|
UI de Admin (Field Forge > Options Pages) | Tabla wp_fieldforge_options_pages | Los gestores de contenido quieren añadir o renombrar páginas sin tocar el código |
Registro automático desde una regla de ubicación de grupo de campos (options_page == ) | Definición del grupo de campos | La página alberga exactamente un grupo de campos; no necesitas un icono o posición personalizados |
fieldforge_add_options_page([...]) API de PHP | Código de functions.php / plugin | El registro debe incluirse con el tema; quieres control total sobre el icono, posición, capacidad, slug padre |
fieldforge_add_options_page( $args )
Referencia Completa de Parámetros:
| Parámetro | Tipo | Predeterminado | Descripción | |
|---|---|---|---|---|
page_title | string | 'Options' | Título de la página mostrado en la parte superior | |
menu_title | string | 'Options' | Etiqueta del menú en la barra lateral de administración | |
menu_slug | string | 'fieldforge-options' | Slug único para la URL de la página | |
capability | string | 'manage_options' | Capacidad requerida | |
parent_slug | string | '' | Slug del menú padre (vacío = nivel superior) | |
icon_url | string | 'dashicons-admin-generic' | Clase de Dashicon o URL de imagen | |
position | int\ | null | null | Posición del menú |
Página de Opciones de Nivel Superior
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,
] );
} );Subpáginas Bajo un Padre
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',
] );
} );Accediendo a los Valores de la Página de Opciones
$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 para páginas gestionadas por UI
Las páginas añadidas en la UI de administración viven en wp_fieldforge_options_pages y están expuestas para gestión sin cabeza / por script (las fuentes de API de PHP y regla de grupo de campos NO están en esta tabla y son de solo lectura a través de este endpoint). Todas las rutas requieren una solicitud autenticada con 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 validación coincide con la UI de administración: se requieren page_title y menu_slug, el slug debe ser único, los slugs reservados de Field Forge (por ejemplo, fieldforge-settings) son rechazados. Los errores devuelven JSON con forma de WP_Error con code y message.
Integración de Lang Forge
Cuando Lang Forge está activo, los valores de la página de opciones se almacenan por idioma. Desde el lado de la plantilla, get_field() devuelve automáticamente el valor para el idioma actual.
// 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'—