安装插件时,我应该将用户的API密钥保存在哪里?

时间:2020-04-24 作者:mamonas

我正在创建一个插件,它将要求用户设置一个API密钥,以便与我的API通信。我的问题是:我应该把它保存在哪里?

从逻辑上讲,我认为它应该保存在数据库中,这就是我开始做的。我编写了以下代码来创建一个表,并在其中存储api\\U密钥:

<?php

/**
 * Fired during plugin activation.
 */
class Plugin_Activator {
    public static function activate() {
        global $wpdb;

        $table_name = $wpdb->prefix . \'my-plugin-name\'
        $charset_collate = $wpdb->get_charset_collate();

        $sql = "CREATE TABLE $table_name (
                        id int(11) NOT NULL auto_increment,
                        api_key varchar(23) NOT NULL
                ) $charset_collate;";

        require_once( ABSPATH . \'wp-admin/includes/upgrade.php\' );
        dbDelta( $sql );
        add_option( \'test_db_version\', $test_db_version );
    }
}
但是有一张桌子只用来存放这个东西感觉不太好,所以我想知道是否还有另一种我不知道的方法。

1 个回复
最合适的回答,由SO网友:Dave Romsey 整理而成

使用Settings API 显示字段和Options API 存储价值将是一个很好的方法。

您的直觉是正确的——创建一个自定义表来存储API键不是一种可行的方法。

Edit

这里有一个完整的例子https://wpengineer.com/2139/adding-settings-to-an-existing-page-using-the-settings-api/) 将自定义设置添加到“选项-常规”页面:

// Register and define the settings
add_action(\'admin_init\', \'ozhwpe_admin_init\');
function ozhwpe_admin_init(){
    register_setting(
        \'general\',                 // settings page
        \'ozhwpe_options\',          // option name
        \'ozhwpe_validate_options\'  // validation callback
    );

    add_settings_field(
        \'ozhwpe_notify_boss\',      // id
        \'Boss Email\',              // setting title
        \'ozhwpe_setting_input\',    // display callback
        \'general\',                 // settings page
        \'default\'                  // settings section
    );

}

// Display and fill the form field
function ozhwpe_setting_input() {
    // get option \'boss_email\' value from the database
    $options = get_option( \'ozhwpe_options\' );
    $value = $options[\'boss_email\'];

    // echo the field
    ?>
<input id=\'boss_email\' name=\'ozhwpe_options[boss_email]\'
 type=\'text\' value=\'<?php echo esc_attr( $value ); ?>\' /> Boss wants to get a mail when a post is published
    <?php
}

// Validate user input
function ozhwpe_validate_options( $input ) {
    $valid = array();
    $valid[\'boss_email\'] = sanitize_email( $input[\'boss_email\'] );

    // Something dirty entered? Warn user.
    if( $valid[\'boss_email\'] != $input[\'boss_email\'] ) {
        add_settings_error(
            \'ozhwpe_boss_email\',           // setting title
            \'ozhwpe_texterror\',            // error ID
            \'Invalid email, please fix\',   // error message
            \'error\'                        // type of message
        );
    }

    return $valid;
}
我更改了代码,使该选项显示在“常规选项”页面上。修改此代码以使用API密钥字段不会太困难。

相关推荐

我应该在哪里安装一个PHP库到WordPress中,这样网页中的代码才能激活它?

简单地说一下我的背景,我不是一名网络开发人员,而是一名电气工程师。我面临的关键问题是将PHP库放在文件树中的何处,以便嵌入到网页中的代码可以访问它。对于那些知道这件事的人来说,这一定是微不足道的,但我在网上找不到任何有关这件事的信息。这是图书馆:https://github.com/PlayerNguyen/OptEco/tree/master/web_integration/api以下是网页内容:https://github.com/PlayerNguyen/OptEco/blob/master/web