wordpress自定义配置

664 2023年04月07日 WordPress,后端

在制作插件时,自定义的配置项是经常会遇到的。在左侧“配置”的常规菜单下添加配置以下代码可实现:

add_setting(){
    register_setting( 'general', 'objui_keyword' );
    add_settings_field( 
        'objui_keyword', 
        '<label for="objui_keyword">关键词:</label>', 
        function(){
            $value = get_option( 'objui_keyword', '' );
            echo '<input name="objui_keyword" id="objui_keyword"  placeholder="网站关键词,多个用, 隔开" class="regular-text phone"  value="' . $value . '"/>';
        }, 
        'general' 
    );
}
add_filter( 'admin_init' , 'add_setting');

代码解析:在“设置”-“常规”配置页面添加了关键词设置 objui_keyword。

相关函数 register_settingadd_settings_fieldadd_filter

简单几个配置项可以这么操作。但如果配置项有很多呢,此时我们就需要单独增加一个配置页面,甚至几个页面来完成配置。

//添加顶部菜单
function wporg_options_page() {
    add_menu_page(
       '微信配置',
       '微信',
       'manage_options',
       'objui_wx_config',
       'objui_wx_config_html',
       'dashicons-format-chat',
       10
    );
}
add_action( 'admin_menu', 'wporg_options_page' );

//配置页面HTML
function objui_wx_config_html() {
    if ( ! current_user_can( 'manage_options' ) ) {
        return;
    }
    require_once plugin_dir_path(__FILE__). 'templates/setting.php';
}

//添加字段
function dbi_register_settings() {
    add_settings_section( 'objui_wx_section', '微信配置', 'section_text', 'objui_wx_group' );
    //appid
    register_setting( 'objui_wx_group', 'objui_wx_appid' );
    add_settings_field( 'objui_wx_appid', 'AppID:', 'objui_wx_appid_cp', 'objui_wx_group', 'objui_wx_section' );
}
add_action( 'admin_init', 'dbi_register_settings' );

function section_text() {
    echo "<p>以下是微信相关配置:</p>";
}

function objui_wx_appid_cp() {
    $options = get_option( 'objui_wx_appid' );
    $value = esc_attr($options);
    echo "<input id='objui_wx_appid' name='objui_wx_appid' type='text' value='{$value}' />";
}

//setting.php
<?php
 if ( isset( $_GET[ 'settings-updated' ] ) ) {
    add_settings_error( 'objui_wx_messages', 'objui_wx_message', __( '保存成功', 'objui_wx_group' ), 'updated' );
}

settings_errors( 'objui_wx_messages' );
?>
    <div class=wrap>
       
       <form action="options.php" method="post">
   
           <?php
           settings_fields( 'objui_wx_group' );
           do_settings_sections( 'objui_wx_group' ); 
           submit_button( '保存配置' );
           ?>
       </form>
   </div>

代码解析:add_menu_page 创建了顶部菜单“微信”,其打开的页面链接是 templates/setting.php。register_setting在wp_options表添加了一条option_name为objui_wx_appid的记录。 add_settings_field设置了字段的表单。 然后在setting.php通过settings_fields展示出来。 最后提交到options.php进行保存。

注意:一定需要通过add_settings_field和settings_fields 设置表单,如果直接在setting页面实现表单,得自行处理表单验证,否则会触发安全报警,无法保存数据。

相关函数: add_menu_pageadd_settings_section register_settingadd_settings_fieldadd_settings_error settings_errorssettings_fields do_settings_sections submit_button

评论

0 条评论
OBJUI公众号
热门文章
  • go语言怎么连接mysql,并实现增删改查

    要使用Go语言连接MySQL,需要使用第三方库。常用的库包括: 这里以go-sql-driver/mysql为 […]

  • 使用Echarts画甘特图

    Echarts是一个非常强大的图表库, 下面我们来使用它来画甘特图,

  • Beego实现JWT

    Beego是一个基于Go语言的Web框架,实现JWT认证可以通过beego的中间件机制来实现,下面是一个简单的 […]

  • beego实现模块化开发

    Beego 框架可以通过模块化开发来提高项目的可维护性和可扩展性,可以将一个大型的应用划分为多个模块,每个模块独立维护,有自己的控制器、视图和模型等。

  • PHP解决雪花算法ID在前端精度丢失的问题

    雪花算法(Snowflake)是一种用于生成全局唯一ID的算法,其基本思路是结合时间戳、机器ID、租约ID和序列号生成一个64位的数据,从而保证ID的唯一性。 雪花算法的生成过程如下:

  • 虚拟滚动实现页面百万数据滚动

    1.概念 虚拟滚动是一种优化长列表性能的技术,它通过按需渲染的方式,只渲染可见部分的列表项,而不是渲染整个列表 […]

  • go实现MD5

    在这个示例中,我们使用了Go标准库中的crypto/md5包来计算一个字符串的MD5值。首先,我们将字符串转换 […]

  • 使用Axios+PHP+JWT实现登录认证

    JWT(JSON Web Token),顾名思义就是可以在Web上传输的token,这种token是用JSON格式进行format的。它是一个开源标准(RFC7519),定义了一个紧凑的自包含的方式在不同实体之间安全的用JSON格式传输信息。

  • 依赖注入(DI)和控制反转(IoC)

    依赖注入(Dependency Injection,简称DI)是一种设计模式,它允许我们在代码中去除硬编码的依赖关系,并使这些关系变得更加灵活和可配置。依赖注入通过将依赖关系(例如对象、变量或服务等)作为参数传递给需要它们的对象,从而实现解耦和可测试性。 控制反转(Inversion of Control,简称IoC)是一种设计原则,它将控制权从代码本身转移到外部容器中,该容器负责创建和管理对象及其依赖关系。控制反转通过将对象的创建和管理交给外部容器来完成,从而减少了类之间的耦合,并使代码更加可维护和可扩展。

  • Linux服务器Rsync结合inotify同步文件

    一、实现效果 服务器A:192.168.161.150 (分布服务器)(rsync客户端+inotify) 服务器B:192.168.161.151 (WEB服务器1)(rsync服务端) 服务器C:192.168.161.152 (WEB服务器2)(rsync服务端) 说明:服务器A有文件更新,自动同步到服务器B和C