Crear una página de ajustes con Settings API

Php marzo 10, 2026

La Settings API es el sistema oficial de WordPress para crear páginas de configuración. Gestiona automáticamente el guardado, la validación y los mensajes de error. Aunque tiene más código inicial que construir el formulario manualmente, es la forma correcta y más segura de hacerlo.

Casos de uso: página de ajustes de cualquier plugin, configuración de API keys, opciones globales del tema o plugin.

<?php
// Añadir página al menú
add_action( 'admin_menu', 'mi_plugin_menu' );
function mi_plugin_menu() {
    add_options_page(
        'Mi Plugin',
        'Mi Plugin',
        'manage_options',
        'mi-plugin',
        'mi_plugin_render_page'
    );
}

// Registrar ajustes
add_action( 'admin_init', 'mi_plugin_settings' );
function mi_plugin_settings() {
    register_setting( 'mi_plugin_group', 'mi_plugin_api_key', 'sanitize_text_field' );

    add_settings_section( 'mi_seccion', 'Configuración', null, 'mi-plugin' );

    add_settings_field(
        'mi_api_key',
        'API Key',
        'mi_plugin_field_render',
        'mi-plugin',
        'mi_seccion'
    );
}

function mi_plugin_field_render() {
    $valor = get_option( 'mi_plugin_api_key', '' );
    echo '';
}

// Renderizar página
function mi_plugin_render_page() {
    ?>
    

Mi Plugin

<?php settings_fields( 'mi_plugin_group' ); do_settings_sections( 'mi-plugin' ); submit_button(); ?>
<?php }

¿Qué hace cada parte?

  • add_options_page(): añade un enlace bajo el menú «Ajustes» del admin. Los parámetros son: título de la página, texto del menú, capacidad requerida, slug único y función de renderizado.
  • register_setting(): registra la opción indicando su grupo y el callback de sanitización. WordPress se encarga del guardado al hacer POST a options.php.
  • add_settings_section(): crea un agrupador visual de campos. Una página puede tener varias secciones.
  • add_settings_field(): conecta un campo visible con su función de renderizado y lo asigna a una sección.
  • settings_fields(): genera los campos ocultos necesarios (nonce, action) para el guardado seguro.
  • do_settings_sections(): renderiza todas las secciones y campos registrados para esta página.
  • submit_button(): renderiza el botón de guardar con los estilos estándar de WordPress.