wp-settings-page
Create WordPress admin settings pages with Settings API.
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.
| name | wp-settings-page |
|---|---|
| description | Create WordPress admin settings pages with Settings API. |
WP Settings Page
Instructions
When creating admin settings pages for the plugin:
- Register setting: Use
register_setting()for storage - Add settings section:
add_settings_section() - Add settings fields:
add_settings_field() - Create options page:
add_options_page() - 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