wp-settings-page

dreamworks2050's avatarfrom dreamworks2050

Create WordPress admin settings pages with Settings API.

⭐0stars🔀0forks📁View on GitHub🕐Updated Dec 29, 2025

When & Why to Use This Skill

This Claude skill streamlines WordPress plugin development by automating the creation of admin settings pages using the official Settings API. It ensures that developers follow standardized patterns for registering settings, defining sections, and building secure options pages, significantly reducing boilerplate code and potential security risks.

Use Cases

  • Rapidly scaffolding a custom configuration dashboard for a new WordPress plugin or theme.
  • Implementing secure data handling and input sanitization for plugin options to ensure compliance with WordPress security standards.
  • Standardizing the admin UI across multiple WordPress projects by leveraging native API patterns and capability-based access control.
namewp-settings-page
descriptionCreate WordPress admin settings pages with Settings API.

WP Settings Page

Instructions

When creating admin settings pages for the plugin:

  1. Register setting: Use register_setting() for storage
  2. Add settings section: add_settings_section()
  3. Add settings fields: add_settings_field()
  4. Create options page: add_options_page()
  5. Sanitize input: Use callback to clean data

Pattern

// Register setting
register_setting('retrologin_options', 'retrologin_settings');

// Add section
add_settings_section('retrologin_general', 'General Settings', 'retrologin_section_cb', 'retrologin');

// Add field
add_settings_field('retrologin_color', 'Retro Color', 'retrologin_color_cb', 'retrologin', 'retrologin_general');

// Add menu page
add_options_page('RetroLogin Settings', 'RetroLogin', 'manage_options', 'retrologin', 'retrologin_options_page');

Options Page Structure

function retrologin_options_page(): void {
    ?>
    <div class="wrap">
        <h1>RetroLogin Settings</h1>
        <form action="options.php" method="post">
            <?php
            settings_fields('retrologin_options');
            do_settings_sections('retrologin');
            submit_button();
            ?>
        </form>
    </div>
    <?php
}

Sanitization

function retrologin_sanitize($input): array {
    $sanitized = [];
    if (isset($input['color'])) {
        $sanitized['color'] = sanitize_text_field($input['color']);
    }
    return $sanitized;
}

Guidelines

  • Use single option array for related settings
  • Always sanitize on save
  • Use capabilities check: manage_options
  • Store defaults on plugin activation