WordPress中文开发手册

  1. Home
  2. Docs
  3. WordPress中文开发手册
  4. WordPress插件开发
  5. 设置
  6. 使用设置API

使用设置API

添加设置

您必须使用register_setting()定义新设置,它将在{$ wpdb-> prefix} _options表中创建一个条目。

您可以使用add_settings_section()在现有页面上添加新的部分。

您可以使用add_settings_field()将新字段添加到现有部分。

警报:register_setting()以及所提到的add_settings _ *()函数都应该添加到admin_init动作钩子中。

添加设置

register_setting( 
    string $option_group, 
    string $option_name, 
    callable $sanitize_callback = ''
);

关于register_setting()的函数参考有关所使用参数的全面说明。

##添加一节

add_settings_section( 
    string $id, 
    string $title, 
    callable $callback, 
    string $page
);

部分是您在具有共享标题的WordPress设置页面上看到的设置组。 在插件中,您可以向现有设置页面添加新的部分,而不是创建一个全新的页面。 这使您的插件更容易维护,并创建更少的新页面供用户学习。

有关使用的参数的完整说明,请参考关于add_settings_section()的函数参考。

##添加一个字段

add_settings_field(
    string $id, 
    string $title, 
    callable $callback, 
    string $page, 
    string $section = 'default', 
    array $args = []
);

有关使用的参数的完整说明,请参考关于add_settings_field()的函数参考。

示例

<?php
function wporg_settings_init()
{
    // register a new setting for "reading" page
    register_setting('reading', 'wporg_setting_name');
 
    // register a new section in the "reading" page
    add_settings_section(
        'wporg_settings_section',
        'WPOrg Settings Section',
        'wporg_settings_section_cb',
        'reading'
    );
 
    // register a new field in the "wporg_settings_section" section, inside the "reading" page
    add_settings_field(
        'wporg_settings_field',
        'WPOrg Setting',
        'wporg_settings_field_cb',
        'reading',
        'wporg_settings_section'
    );
}
 
/**
 * register wporg_settings_init to the admin_init action hook
 */
add_action('admin_init', 'wporg_settings_init');
 
/**
 * callback functions
 */
 
// section content cb
function wporg_settings_section_cb()
{
    echo '<p>WPOrg Section Introduction.</p>';
}
 
// field content cb
function wporg_settings_field_cb()
{
    // get the value of the setting we've registered with register_setting()
    $setting = get_option('wporg_setting_name');
    // output the field
    ?>
    <input type="text" name="wporg_setting_name" value="<?= isset($setting) ? esc_attr($setting) : ''; ?>">
    <?php
}

获取设置

get_option(
    string $option,
    mixed $default = false
);

通过get_option()函数完成设置。
该函数接受两个参数:该选项的名称和该选项的可选默认值。

示例

// get the value of the setting we've registered with register_setting()
$setting = get_option('wporg_setting_name');