在WordPress中,update_option()
和 get_option()
是两个非常常用的函数,它们用于在WordPress数据库中存储和检索插件或主题的设置。以下是如何使用这两个函数来管理插件设置的基本步骤:
1. 获取插件设置
使用 get_option()
函数可以从数据库中检索插件的设置。如果设置不存在,它将返回一个默认值。
// 假设你的插件设置键名为 'my_plugin_settings'
$settings = get_option('my_plugin_settings', array());
// 如果没有设置,使用默认值
if (empty($settings)) {
$settings = array(
'setting1' => 'value1',
'setting2' => 'value2',
);
}
2. 更新插件设置
使用 update_option()
函数可以更新数据库中的插件设置。
// 假设你有一个数组,包含了要更新的设置
$new_settings = array(
'setting1' => 'new_value1',
'setting2' => 'new_value2',
);
// 更新插件设置
update_option('my_plugin_settings', $new_settings);
完整示例
以下是一个简单的插件设置管理示例,包括在插件激活时添加默认设置、在管理页面中显示和更新设置。
// 在插件激活时添加默认设置
function my_plugin_activate() {
add_option('my_plugin_settings', array(
'setting1' => 'default_value1',
'setting2' => 'default_value2',
));
}
register_activation_hook(__FILE__, 'my_plugin_activate');
// 管理页面表单处理
function my_plugin_admin_page() {
// 检查是否有表单提交
if (isset($_POST['submit'])) {
// 获取和验证表单数据
$setting1 = sanitize_text_field($_POST['setting1']);
$setting2 = sanitize_text_field($_POST['setting2']);
// 更新设置
$new_settings = array(
'setting1' => $setting1,
'setting2' => $setting2,
);
update_option('my_plugin_settings', $new_settings);
// 添加设置更新消息
add_settings_error('my_plugin_messages', 'my_plugin_message', 'Settings saved.', 'updated');
}
// 获取当前设置
$settings = get_option('my_plugin_settings', array());
// 显示设置表单
?>
<div class="wrap">
<h1>My Plugin Settings</h1>
<?php settings_errors('my_plugin_messages'); ?>
<form method="post" action="">
<table class="form-table">
<tr valign="top">
<th scope="row">Setting 1</th>
<td><input type="text" name="setting1" value="<?php echo esc_attr($settings['setting1']); ?>" /></td>
</tr>
<tr valign="top">
<th scope="row">Setting 2</th>
<td><input type="text" name="setting2" value="<?php echo esc_attr($settings['setting2']); ?>" /></td>
</tr>
</table>
<input type="submit" name="submit" class="button button-primary" value="Save Changes" />
</form>
</div>
<?php
}
// 添加管理菜单项
function my_plugin_add_admin_menu() {
add_menu_page('My Plugin Settings', 'My Plugin', 'manage_options', 'my-plugin-settings', 'my_plugin_admin_page', 'dashicons-admin-generic', 80);
}
add_action('admin_menu', 'my_plugin_add_admin_menu');
这个示例中,我们创建了一个简单的设置页面,用户可以在其中输入两个设置值。当用户提交表单时,这些值将被保存到数据库中。在插件激活时,会添加默认设置。注意,为了安全性,使用 sanitize_text_field()
函数来清理用户输入的数据。