要在WordPress插件中创建设置页面并使用settings_fields()
和do_settings_sections()
函数,你需要按照以下步骤操作:
-
添加设置链接到插件列表:
在插件的主文件中添加一个链接到插件设置页面。 -
注册设置:
使用register_setting()
函数来注册你的设置组,并指定一个回调函数来验证和清洗数据。 -
添加设置部分:
使用add_settings_section()
函数来添加一个设置部分,并为该部分指定一个回调函数来显示说明。 -
添加设置字段:
使用add_settings_field()
函数来添加具体的设置字段,并为每个字段指定一个回调函数来显示输入表单。 -
创建设置页面:
创建一个函数来输出设置表单,并调用settings_fields()
,do_settings_sections()
和submit_button()
。
以下是一个简单的示例,展示如何使用这些函数来创建一个设置页面:
// 1. 添加设置链接到插件列表
function myplugin_add_settings_link($links) {
$settings_link = '<a href="options-general.php?page=myplugin-settings">Settings</a>';
array_push($links, $settings_link);
return $links;
}
$filter_name = "plugin_action_links_" . plugin_basename(__FILE__);
add_filter($filter_name, 'myplugin_add_settings_link');
// 2. 注册设置
function myplugin_register_settings() {
register_setting('myplugin_options_group', 'myplugin_option_name', 'myplugin_callback');
}
add_action('admin_init', 'myplugin_register_settings');
// 3. 添加设置部分
function myplugin_add_settings_section() {
add_settings_section(
'myplugin_section_id', // ID
'My Plugin Settings', // 标题
'myplugin_section_callback', // 回调函数
'myplugin' // 页面
);
}
add_action('admin_init', 'myplugin_add_settings_section');
// 4. 添加设置字段
function myplugin_add_settings_field() {
add_settings_field(
'myplugin_field_id', // ID
'My Setting Field', // 标题
'myplugin_field_callback', // 回调函数
'myplugin', // 页面
'myplugin_section_id' // 部分
);
}
add_action('admin_init', 'myplugin_add_settings_field');
// 回调函数来验证设置
function myplugin_callback($input) {
// 验证和清洗输入
return $input;
}
// 设置部分的回调函数
function myplugin_section_callback() {
echo '<p>Enter your settings below:</p>';
}
// 设置字段的回调函数
function myplugin_field_callback() {
$value = get_option('myplugin_option_name');
echo '<input type="text" id="myplugin_option_name" name="myplugin_option_name" value="' . esc_attr($value) . '" />';
}
// 5. 创建设置页面
function myplugin_settings_page() {
?>
<div class="wrap">
<h1>My Plugin Settings</h1>
<form method="post" action="options.php">
<?php
settings_fields('myplugin_options_group');
do_settings_sections('myplugin');
submit_button();
?>
</form>
</div>
<?php
}
// 添加菜单项
function myplugin_add_menu_item() {
add_options_page(
'My Plugin Settings', // 页面标题
'My Plugin', // 菜单标题
'manage_options', // 权限
'myplugin-settings', // 页面 slug
'myplugin_settings_page' // 回调函数
);
}
add_action('admin_menu', 'myplugin_add_menu_item');
在这个示例中,我们创建了一个设置页面,其中包含一个文本输入字段。当用户在设置页面输入信息并保存时,register_setting()
函数会调用myplugin_callback()
函数来验证和清洗数据。settings_fields()
函数用于输出表单中的隐藏字段,这些字段对于WordPress设置API是必需的。do_settings_sections()
函数用于输出我们定义的设置部分和字段。