为WordPress插件添加自定义选项可以通过添加设置页来实现,下面是示例代码:
// 添加设置页
function custom_plugin_settings_page() {
add_options_page(
'Custom Plugin Settings',
'Custom Plugin',
'manage_options',
'custom-plugin-settings',
'custom_plugin_options_page'
);
}
add_action('admin_menu', 'custom_plugin_settings_page');
// 渲染设置页
function custom_plugin_options_page() {
?>
<div class="wrap">
<h2><?php _e('Custom Plugin Settings'); ?></h2>
<form action="options.php" method="post">
<?php
settings_fields('custom-plugin-settings');
do_settings_sections('custom-plugin-settings');
submit_button(__('Save Settings'));
?>
</form>
</div>
<?php
}
// 注册设置项并添加相关字段
function custom_plugin_admin_init() {
register_setting(
'custom-plugin-settings',
'custom_plugin_options',
'custom_plugin_options_validate'
);
add_settings_section(
'custom_plugin_options_section',
__('Custom Plugin Options'),
'custom_plugin_options_section_callback',
'custom-plugin-settings'
);
add_settings_field(
'custom_plugin_option_name',
__('Option Name'),
'custom_plugin_option_name_callback',
'custom-plugin-settings',
'custom_plugin_options_section'
);
add_settings_field(
'custom_plugin_option_value',
__('Option Value'),
'custom_plugin_option_value_callback',
'custom-plugin-settings',
'custom_plugin_options_section'
);
}
add_action('admin_init', 'custom_plugin_admin_init');
// 设置区域回调函数
function custom_plugin_options_section_callback() {
echo __('Customize your plugin settings:');
}
// 字段回调函数
function custom_plugin_option_name_callback() {
$options = get_option('custom_plugin_options');
?>
<input type="text" name="custom_plugin_options[option_name]" value="<?php echo esc_attr($options['option_name']); ?>" />
<?php
}
function custom_plugin_option_value_callback() {
$options = get_option('custom_plugin_options');
?>
<input type="text" name="custom_plugin_options[option_value]" value="<?php echo esc_attr($options['option_value']); ?>" />
<?php
}
// 数据验证函数
function custom_plugin_options_validate($input) {
$valid = array();
$valid['option_name'] = sanitize_text_field($input['option_name']);
$valid['option_value'] = sanitize_text_field($input['option_value']);
return $valid;
}
这段代码中:
custom_plugin_settings_page()
函数通过 add_options_page()
函数添加一个 WordPress 插件设置页。custom_plugin_options_page()
函数渲染了设置页的 HTML。custom_plugin_admin_init()
函数通过调用 register_setting()
函数注册了插件设置的存储选项,并添加设置区域和相关字段的回调函数,以及一个数据验证函数 custom_plugin_options_validate()
。custom_plugin_options_section_callback()
函数用来输出设置区域的文本说明。custom_plugin_option_name_callback()
和 custom_plugin_option_value_callback()
函数分别用来生成设置中选项的表单字段。custom_plugin_options_validate()
函数用于验证用户提交的数据,并清理不必要的内容,如 HTML 标签和额外的空白符。