直接在插件文件夹中创建一个文件夹,然后将下面的代码拷贝到一个新的PHP文件里面,保存,在后台刷新插件页面启用即可!
<?php
/*
Plugin Name: Custom Settings
Description: 添加自定义设置选项
*/
// 添加设置菜单
function custom_settings_menu() {
add_options_page(
'Custom Settings', // 页面标题
'Custom Settings', // 菜单标题
'manage_options', // 用户权限
'custom-settings', // 菜单 slug
'custom_settings_page_callback' // 回调函数
);
}
add_action('admin_menu', 'custom_settings_menu');
// 创建设置页面
function custom_settings_page_callback() {
?>
<div class="wrap">
<h1>Custom Settings</h1>
<form method="post" action="options.php">
<?php
// 添加设置节
settings_fields('custom_settings_group');
// 输出设置字段
do_settings_sections('custom-settings');
// 添加保存按钮
submit_button('Save Settings');
?>
</form>
</div>
<?php
}
// 添加设置字段
function custom_settings_fields() {
add_settings_section(
'custom_settings_section', // 节标题
'Custom Settings Section', // 节文本
'custom_settings_section_callback', // 回调函数
'custom-settings' // 设置页面 slug
);
add_settings_field(
'custom_setting_field', // 字段 ID
'Custom Setting Field', // 字段标题
'custom_setting_field_callback', // 回调函数
'custom-settings', // 设置页面 slug
'custom_settings_section' // 所属节 slug
);
register_setting(
'custom_settings_group', // 设置组
'custom_setting' // 设置名称
);
}
add_action('admin_init', 'custom_settings_fields');
// 设置节回调函数
function custom_settings_section_callback() {
echo '这是自定义设置的节。';
}
// 设置字段回调函数
function custom_setting_field_callback() {
$custom_setting = get_option('custom_setting');
?>
<input type="text" name="custom_setting" value="<?php echo esc_attr($custom_setting); ?>">
<?php
}
function plugin_add_settings_link ( $links ) {
$settings_link = '<a href="options-general.php?page=plugin_name">' . __ ( 'Settings' ) . '</a>' ;
array_push ( $links , $settings_link ) ;
return $links ;
}
$plugin = plugin_basename ( __FILE__ ) ;
add_filter ( "plugin_action_links_$plugin" , 'plugin_add_settings_link' ) ;
// 激活插件时自动添加设置字段和选项
function custom_settings_init() {
custom_settings_fields(); // 添加设置字段和节
flush_rewrite_rules(); // 刷新重写规则以便显示设置页面
}
register_activation_hook(__FILE__, 'custom_settings_init');