18. Páginas de Opciones | Field Forge - Campos personalizados, diseñados para la velocidad
Descargar Iniciar sesión

18. Páginas de Opciones

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.

RutaFuenteCuándo usar
UI de Admin (Field Forge > Options Pages)Tabla wp_fieldforge_options_pagesLos 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 camposLa página alberga exactamente un grupo de campos; no necesitas un icono o posición personalizados
fieldforge_add_options_page([...]) API de PHPCódigo de functions.php / pluginEl 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ámetroTipoPredeterminadoDescripción
page_titlestring'Options'Título de la página mostrado en la parte superior
menu_titlestring'Options'Etiqueta del menú en la barra lateral de administración
menu_slugstring'fieldforge-options'Slug único para la URL de la página
capabilitystring'manage_options'Capacidad requerida
parent_slugstring''Slug del menú padre (vacío = nivel superior)
icon_urlstring'dashicons-admin-generic'Clase de Dashicon o URL de imagen
positionint\nullnullPosición del menú

Página de Opciones de Nivel Superior

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

Subpáginas Bajo un Padre

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

Accediendo a los Valores de la Página de Opciones

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;

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.

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')

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.

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'

Asistente de IA de Forge En línea

¡Hola! Soy el asistente de IA de Field Forge. Pregúntame lo que quieras sobre el plugin — configuración, funciones, resolución de problemas o desarrollo.

Ahora mismo
Con la tecnología de Forge AI · Explorar documentación