1.创建一个新的插件test-two,在插件的目录下创建一个test-two文件夹;

2.创建test-two.php文件进行添加描述插件的信息;

#part 1
<?php /* Plugin Name: Test Two Plugin URI: http://test-two.com Description: 测试开发插件 Version: 1.0.0 Author: test Author URI: http://test-two.com License: testtwo */

  在插件中看到如下的效果:

  wordpress 插件开发 使用API保存设置_数据库

 

3.将插件显示在主菜单中,这个过程中主要用到了add_menu_page()这个钩子,对应的有好几个参数,上代码:

  

#part 2
add_action('admin_menu', 'two_create_menu');
function two_create_menu(){
    //创建顶级菜单
    add_menu_page(
        'Test Two Index', #浏览器上面显示的标题
        '测试插件',      #插件名称
        'manage_options',  #权限
        'test_two',      #url后面链接的参数
        'two_setting_page',  #回调方法名称, 主要是在这里面设置页面
        ''
    );
}

function two_setting_page(){
  <h2>这里是菜单页面</h2>
}

参考备注部分(可以不看):
add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position );
参数解释:

$page_title: (字符串,必须)菜单页面标题,即显示在标题栏的标题

$menu_title:  (字符串,必须)菜单标题,即菜单显示的问题

$capability:(字符串,必须)权限,即向哪些用户显示此菜单

$menu_slug:(字符串,必须)显示在uri地址栏里的页面名称,默认可为空,类似?page=custompage

$function:回调方法的名称

$icon_url:(可选)菜单图标url

$position:(可选)菜单显示顺序

 

4.菜单里面元素设置:

  a.register_setting(); #注册一个新的setting,注册设置及其数据。

   register_setting( string $option_group, string $option_name, array $args = array() )

         option_group:设置一个共同的分组
     option_name:设置数据库中存储的数组索引

 

  b.add_settings_section(); #配合register_setting使用,添加一个设置提交数据的区域
        add_settings_section( string $id, string $title, callable $callback, string $page )

  c.add_settings_field(): #最终的大boss, 在前面两个的基础上来添加各种元素,即:每调需要input中输入的数据元素

上代码:

 

#part 3
add_action('admin_init', 'register_test_two'); function register_test_two(){ #注册一个选项, 用于装在所有的插件设置项 $options_group = 'test_two_group'; #相当于一个数组 register_setting($options_group, 'test_two_options'); #数据库中存储的索引名称 #添加设置选项 ??? $setting_section = 'test_two_setting_section'; add_settings_section( $setting_section, '这里是 add_settings_section 设置', 'test_two_setting_section_function', $options_group ); add_settings_field( 'test_two_color', '字体颜色', 'test_two_color_function', $options_group, $setting_section ); } function test_two_color_function(){ $test_two_color_options = get_option('test_two_options'); # 注意input中name和value的取值,都是前面setting的时候设置的数据库中的索引名称 ?> <input type="text" name="test_two_options[color]" value="<?=$test_two_color_options['color']?>"> <?php } #输入选项的区域设置 function test_two_setting_section_function(){ ?> <p>设置字体的样式</p> <?php }

 

 

设置创建菜单中的调用方法:

这个大菜单的页面区域会调用前面设置好的 分组:$options_group,然后使用 settings_fields()和do_settings_sections() 分别设置字段和区域

#part 4
function two_setting_page(){
    ?>
    <div class="wrap">
            <h2>顶级菜单</h2>
            <form action="options.php" method="post">
                <?php
                    $options_group = 'test_two_group';    #相当于一个数组
                    #输出必要的字段
                    settings_fields($options_group);

                    #输出显示的区域
                    do_settings_sections($options_group);

                    #输出按钮
                    submit_button();
                ?>
                
            </form>
    </div>
    <?php
}