WordPress 插件设置页:Settings API 还是自己写表单
摘要
做一个插件设置页有两条路,选错了会多写几百行代码。路线一:Settings API(推荐)适合“若干个输入框/开关/下拉”这种常规配置。好处是提交、校验、CSRF、提示全部自动处理。add_action('admin_init', func
做一个插件设置页有两条路,选错了会多写几百行代码。
路线一:Settings API(推荐)
适合“若干个输入框/开关/下拉”这种常规配置。好处是提交、校验、CSRF、提示全部自动处理。
add_action('admin_init', function(){
register_setting('mfp_group', 'mfp_options', [
'sanitize_callback' => 'mfp_sanitize',
]);
add_settings_section('mfp_main', '基础设置', null, 'mfp');
add_settings_field('mfp_api_key', 'API Key', function(){
$opts = get_option('mfp_options', []);
printf(
'<input type="text" name="mfp_options[api_key]" value="%s">',
esc_attr($opts['api_key'] ?? '')
);
}, 'mfp', 'mfp_main');
});三条要点:选项用数组存,一个 option 装全部配置,减少数据库行数;sanitize_callback 必写;字段 name 用 options[键名] 形式。
路线二:手写表单
适合需要多标签页、实时预览、拖拽排序这类复杂交互。这种情况下 Settings API 反而碍事。
手写时必须自己补齐:
wp_nonce_field()防 CSRFcurrent_user_can('manage_options')- 每个字段的类型校验与转义
- 保存后跳转避免刷新重复提交
怎么选
有没有复杂交互是唯一标准。三个输入框用 Settings API 十分钟搞定;做拖拽排序就老老实实手写。
菜单注册
两种都要先有菜单:add_options_page() 挂到设置下,或 add_menu_page() 建独立菜单。回调里输出表单 HTML 即可。
2026年10月20日 14:59
前后30天 · 点日期看归档
9月20日
9月21日
9月22日
9月23日
9月24日
9月25日
9月26日
9月27日
9月28日
9月29日
9月30日
10月1日
10月2日
10月3日
10月4日
10月5日
10月6日
10月7日
10月8日
10月9日
10月10日
10月11日
10月12日
10月13日
10月14日
10月15日
10月16日
10月17日
10月18日
10月19日
10月20日
10月21日
10月22日
10月23日
10月24日
10月25日
10月26日
10月27日
10月28日
10月29日
10月30日
10月31日
11月1日
11月2日
11月3日
11月4日
11月5日
11月6日
11月7日
11月8日
11月9日
11月10日
11月11日
11月12日
11月13日
11月14日
11月15日
11月16日
11月17日
11月18日
11月19日