首页 问答 正文

如何为WordPress插件添加自定义选项。

注册会员 / 悠然自学 / 2023-06-11/ 浏览 143 次

为WordPress插件添加自定义选项可以通过添加设置页来实现,下面是示例代码:

// 添加设置页
function custom_plugin_settings_page() {
    add_options_page(
        'Custom Plugin Settings',
        'Custom Plugin',
        'manage_options',
        'custom-plugin-settings',
        'custom_plugin_options_page'
    );
}
add_action('admin_menu', 'custom_plugin_settings_page');

// 渲染设置页
function custom_plugin_options_page() {
    ?>
    <div class="wrap">
        <h2><?php _e('Custom Plugin Settings'); ?></h2>
        <form action="options.php" method="post">
            <?php
            settings_fields('custom-plugin-settings');
            do_settings_sections('custom-plugin-settings');
            submit_button(__('Save Settings'));
            ?>
        </form>
    </div>
    <?php
}

// 注册设置项并添加相关字段
function custom_plugin_admin_init() {
    register_setting(
        'custom-plugin-settings',
        'custom_plugin_options',
        'custom_plugin_options_validate'
    );

    add_settings_section(
        'custom_plugin_options_section',
        __('Custom Plugin Options'),
        'custom_plugin_options_section_callback',
        'custom-plugin-settings'
    );

    add_settings_field(
        'custom_plugin_option_name',
        __('Option Name'),
        'custom_plugin_option_name_callback',
        'custom-plugin-settings',
        'custom_plugin_options_section'
    );

    add_settings_field(
        'custom_plugin_option_value',
        __('Option Value'),
        'custom_plugin_option_value_callback',
        'custom-plugin-settings',
        'custom_plugin_options_section'
    );
}
add_action('admin_init', 'custom_plugin_admin_init');

// 设置区域回调函数
function custom_plugin_options_section_callback() {
    echo __('Customize your plugin settings:');
}

// 字段回调函数
function custom_plugin_option_name_callback() {
    $options = get_option('custom_plugin_options');
    ?>
    <input type="text" name="custom_plugin_options[option_name]" value="<?php echo esc_attr($options['option_name']); ?>" />
    <?php
}

function custom_plugin_option_value_callback() {
    $options = get_option('custom_plugin_options');
    ?>
    <input type="text" name="custom_plugin_options[option_value]" value="<?php echo esc_attr($options['option_value']); ?>" />
    <?php
}

// 数据验证函数
function custom_plugin_options_validate($input) {
    $valid = array();
    $valid['option_name'] = sanitize_text_field($input['option_name']);
    $valid['option_value'] = sanitize_text_field($input['option_value']);
    return $valid;
} 

这段代码中:

  1. custom_plugin_settings_page() 函数通过 add_options_page() 函数添加一个 WordPress 插件设置页。
  2. custom_plugin_options_page() 函数渲染了设置页的 HTML。
  3. custom_plugin_admin_init() 函数通过调用 register_setting() 函数注册了插件设置的存储选项,并添加设置区域和相关字段的回调函数,以及一个数据验证函数 custom_plugin_options_validate()
  4. custom_plugin_options_section_callback() 函数用来输出设置区域的文本说明。
  5. custom_plugin_option_name_callback()custom_plugin_option_value_callback() 函数分别用来生成设置中选项的表单字段。
  6. custom_plugin_options_validate() 函数用于验证用户提交的数据,并清理不必要的内容,如 HTML 标签和额外的空白符。
大家谈论
    我的见解