WordPress二次开发之插件界面

2022-09-14 15:34:30 浏览数 (1)

上一篇文章介绍了WordPress后台的常用样式,这次给大家分享的是利用WordPress开发一个插件界面 效果图如下

功能和界面都比较简单,但体现了一套完整的插件页面开发流程!

步骤

1.在wp-content/plugins目录下新键插件文件 test_install.php 2.键入如下代码添加左侧菜单

代码语言:javascript复制
<?php
/*
Plugin Name:test_install
Description:这是描述
Author:tzh
Version:0.0.1
*/

// 创建菜单
add_action('admin_menu','my_create_menu');
function my_create_menu(){
    //一级菜单
    add_menu_page(
        '字体颜色',
        '字体颜色',
        'manage_options',
        'my_menus',
        'create_menus'
    );
}
function create_menus(){
 
}

add_menu_page参数从上到下依次说明 1.菜单标题(页面标题) 2.菜单名称 3.浏览该菜单的权限(manage_options表示管理员) 4.菜单别名 5.菜单显示的页面 调用哪个方法来显示 6.菜单图标(图标url)

我们也可以使用 add_submenu_page 创建子菜单

代码语言:javascript复制
add_submenu_page(
        'my1',
        'one',
        'one',
        'manage_options',
        'mysub_menu',
        'my_settings_sub'
    );

参数说明 1.父级菜单(父级菜单别名) 2.菜单标题 3.菜单名称 4.浏览该菜单的权限 5.菜单别名 6.菜单显示的页面 调用哪个方法来显示 7.菜单图标

本文没有创建子菜单

保存设置,在后台界面->插件->激活test_install插件

激活后左侧菜单栏多出一个选项 “字体颜色”

点击“字体颜色” 后发现页面是空的,这是因为我们还没有创建页面 在create_menus 方法键入如下代码

代码语言:javascript复制
function create_menus(){
    ?>
    <div class="wrap">
        <h2>站点字体颜色</h2>
        <form action="" method="post">
            <p>
                <label for="color">字体颜色
                    <input type="text" name="color" value="<?php echo '12'; ?>">
                </label>
            </p>
            <button type="submit" class="button">提交</button>
        </form>
    </div>
    <?php
}

在次点击 “字体颜色” 页面显示如下

到此静态页面搭建完毕 我们要使数据动起来,就得操作数据库 在 test_install.php键入如下代码 创建wp_test

代码语言:javascript复制
register_activation_hook(__FILE__,'test_install'); //插件被启用时调用test_install函数
function test_install(){
    global $wpdb;
    if($wpdb->get_var("show tables like `{$wpdb->prefix}test`") != "{$wpdb->prefix}test"){
        $sql = "create table if not exists `{$wpdb->prefix}test`(
        id int(11) not null auto_increment comment '编号',
        color varchar(30) default '' comment '字体颜色',
        size varchar(20) default '' comment '字体大小',
        primary key (id)
        )default charset=utf8 engine=innodb;";
    
    $wpdb->query($sql);
        } 
}

上面代码在插件被启用时会为我们创建一个wp_test表,有关该插件的数据都存放在这个表中

接下来我们向数据库利用客户端工具向数据库写入假数据(略) 将数据库的数据读取出来

代码语言:javascript复制
function create_menu(){
global $wpdb;
$sql = "select * from `{$wpdb->prefix}test`";
$row = $wpdb->get_row($sql);
$color  =$row->color;
    ?>
    <div class="wrap">
        <h2>站点字体颜色</h2>
        <form action="" method="post">
            <p>
                <label for="color">字体颜色
                    <input type="text" name="color" value="<?php echo $color; ?>">
                </label>
            </p>
        ...
    }

此时页面展示的是数据库的数据

接下来我们要进行数据修改并将修改后的数据更新到数据库中

代码语言:javascript复制
function create_menus(){
    global $wpdb;
    //处理页面提交 提交不为空 并且通过验证
    if(!empty($_POST) && check_admin_referer('test_once')){
        //更新设置
        $wpdb->update("{$wpdb->prefix}test" ,array('color'=>$_POST['color']),array('id'=>1));
        ?>
        <div class="notice notice-updated">
            <p><strong>保存成功</strong></p>
        </div>
        <?php
    }
    $sql = "select * from `{$wpdb->prefix}test`";
    $row = $wpdb->get_row($sql);

    $color  =$row->color;
    $size = $row->size;

    ?>
    <div class="wrap">
        <h2>站点字体颜色</h2>
        <form action="" method="post">
            <p>
                <label for="color">字体颜色
                    <input type="text" name="color" value="<?php echo $color; ?>">
                </label>
            </p>
            <button type="submit" class="button">提交</button>
            <!-- 表单验证信息,只限于当前页面提交 -->
            <?php wp_nonce_field('test_once');?>
        </form>
    </div>
    <?php

}

上述代码我们在当前页面接收POST数据,并进行表单验证限制只能在当前页面提交,防止通过url恶意提交 主要用到方法 wp_nonce_field('test_once') 和 check_admin_referer('test_once')

此时提交的数据可以正常更新到数据库,到此一套完成的插件页面开发流程完毕

0 人点赞