在WordPress中创建设置页面通常涉及到以下几个步骤:
- 添加设置菜单项。
- 创建设置页面。
- 使用
settings_fields()
和do_settings_sections()
函数来组织和管理设置输入字段。
以下是创建一个简单的设置页面的步骤和示例代码:
步骤 1: 添加设置菜单项
在WordPress中,你需要使用 add_options_page()
函数来添加一个设置菜单项。
function myplugin_add_settings_page() {
add_options_page(
'My Plugin Settings', // 页面标题
'My Plugin', // 菜单标题
'manage_options', // 权限级别
'myplugin-settings', // 页面slug
'myplugin_settings_page' // 调用函数以输出页面内容
);
}
add_action('admin_menu', 'myplugin_add_settings_page');
步骤 2: 创建设置页面
你需要定义一个函数来输出设置页面的HTML内容。
function myplugin_settings_page() {
?>
<div class="wrap">
<h1>My Plugin Settings</h1>
<form method="post" action="options.php">
<?php
// 这个函数输出所有的设置字段
settings_fields('myplugin_options');
// 这个函数输出所有的设置部分
do_settings_sections('myplugin-settings');
// 提交按钮
submit_button();
?>
</form>
</div>
<?php
}
步骤 3: 注册设置
你需要使用 register_setting()
函数来注册你的设置,并使用 add_settings_section()
和 add_settings_field()
函数来定义设置部分和字段。
function myplugin_register_settings() {
// 注册设置组
register_setting('myplugin_options', 'myplugin_option_name', 'myplugin_sanitize_options');
// 添加设置部分
add_settings_section(
'myplugin_section_id', // ID
'My Plugin Settings', // 标题
'myplugin_section_callback', // 回调函数,用于显示部分描述
'myplugin-settings' // 页面slug
);
// 添加设置字段
add_settings_field(
'myplugin_field_id', // ID
'Setting Field', // 标题
'myplugin_field_callback', // 回调函数,用于显示字段输入
'myplugin-settings', // 页面slug
'myplugin_section_id' // 部分ID
);
}
add_action('admin_init', 'myplugin_register_settings');
// 部分回调函数
function myplugin_section_callback() {
echo '<p>Enter your settings below.</p>';
}
// 字段回调函数
function myplugin_field_callback() {
$options = get_option('myplugin_option_name');
?>
<input type="text" id="myplugin_option_name" name="myplugin_option_name[myplugin_field_id]" value="<?php echo isset($options['myplugin_field_id']) ? esc_attr($options['myplugin_field_id']) : ''; ?>" />
<?php
}
// 选项清理函数
function myplugin_sanitize_options($input) {
// 清理和验证输入
$sanitized = array();
if (isset($input['myplugin_field_id'])) {
$sanitized['myplugin_field_id'] = sanitize_text_field($input['myplugin_field_id']);
}
return $sanitized;
}
在上面的代码中,myplugin_option_name
是用于存储设置值的选项名称,myplugin_field_id
是字段ID,用于在表单中识别字段。
确保将 myplugin_option_name
、myplugin_section_id
、myplugin_field_id
替换为你自己的唯一标识符,并根据需要调整字段类型和清理函数。