网站的配置管理
- 网站的配置基本都是保存到option这个数据表内
- 后台-》设置下的配置都是保存在option这个表
- 插件的配置一般情况下也是保存到option这个表内
option数据表分析
- option_ID – 自增 ID
- option_name – 设置选项的键
- option_value – 设置选项的值
- autoload – 指定该选项是否在页面加载的时候自动加载,在单站点中默认为 yes ,多站点模式下默认为 no 。
操作配置的相关函数
add_option() // 添加配置
delete_option() //删除配置
get_option() //获取配置
update_option() //更新配置
// 以下为多站点相关函数
add_site_option()
delete_site_option()
get_site_option()
update_site_option()
数据管理界面
为了方便在后台管理配置
add_options_page() //添加一个配置界面,会在后台-》设置下显示
add_settings_section() // 方便分组管理
register_setting() //注册一个配置项
add_settings_field() //添加一个配置属性
settings_fields()
do_settings_sections()
相关钩子
add_action('admin_menu','自定义函数');
add_action('admin_init','自定义函数');
完整实例
<?php
class Create_Test_Menu_Page{
var $option_group = 'lgc_my_plugin_options';
var $option_item = 'lgc_my_plugin_options';
function __construct(){
//创建菜单
add_action('admin_menu',array($this,'my_lgc_test_plugin_page'));
add_action('admin_init',array($this,'register_setting_page'));
}
function my_lgc_test_plugin_page()
{
//Add submenu page to the Settings main menu
//add_options_page( string $page_title, string $menu_title, string $capability, string $menu_slug, callable $function = '' )
add_options_page('My Plugin','My Plugins','manage_options','lgc_mypluginss',array($this,'my_test_plugins_page_func'));
}
function register_setting_page()
{
////Registering New Settings
register_setting($this->option_group,$this->option_item);
//定义一个区域 Defining Sections and Settings
//add_settings_section( string $id, string $title, callable $callback, string $page )
add_settings_section('lgc_myplugin_section','My_Plugin_Settings',array($this,'lgc_myplugin_section_content_func'),'lgc_mypluginss');
//add a new field to a section of a settings page
//add_settings_field( string $id, string $title, callable $callback, string $page, string $section = 'default', array $args = array() )
add_settings_field('lgc_myplugin_filed_text','请输入文字',array($this,'lgc_myplugin_test_filed_text'),'lgc_mypluginss','lgc_myplugin_section');
}
function lgc_myplugin_section_content_func()
{
?>
<p>请在该面板填写你的信息</p>
<?php
}
function lgc_myplugin_test_filed_text()
{
$options = get_option($this->option_item);
$text_string = $options['text'];
?>
<input type="text" name="<?php echo $this->option_item; ?>[text]" id="text" value='<?php echo $text_string; ?>'/>
<?php
}
function my_test_plugins_page_func()
{
?>
<div class="wrap">
<?php screen_icon(); ?>
<h2>My Plugin</h2>
<form action="options.php" method="post">
<?php
//Ouput setting_field
settings_fields($this->option_group);
//Prints out all settings sections added to a particular settings page
do_settings_sections('lgc_mypluginss');
?>
<!--submit-->
<input type="submit" name="Submit" value="Save Change" class="button button-primary" />
</form>
</div>
<?php
}
}
new Create_Test_Menu_Page();
?>