我目前使用update_option(name,value)分别存储我的所有主题选项;函数,但我想将它们全部放入一个数组,序列化它,并在数据库中存储一个选项。
效率更高吗?
答案 0 :(得分:4)
是的,如果您在从DB重新配置配置后进行一些处理(读取:反序列化)!
根据您将查询保存到数据库的选项数量。
答案 1 :(得分:1)
不需要序列化。有一些内置方法可以将主题选项整齐地存储在一个数组中。
这是一个包含所有必要代码的完整示例:
首先,在你的主题的functions.php文件中,你必须通过编写一个小函数并使用WordPress钩子来激活它来注册你将要使用的设置:
<?php
function my_theme_admin_init() {
register_setting('my_options', 'my_theme_options');
}
add_action('admin_init', 'my_theme_admin_init');
?>
然后,在你想要使用这些选项的地方,使用这个html和php。 (请注意,表单发布到options.php。这样做可以利用WordPress内置功能来处理为您保存的选项):
<form method="post" action="options.php">
<?php
// Load the options from the WP db
$options = get_option('my_theme_options');
// WP built-in function to display the appropriate fields for saving options
settings_fields("my_options"); ?>
<table class="form-table">
<tr>
<th scope="row">Facebook URL:</th>
<td>
<input type="text" name="my_theme_options[facebook]" size="40" value="<?php echo stripslashes($options["facebook"]); ?>" />
</td>
</tr>
<tr>
<th scope="row">Twitter URL:</th>
<td>
<input type="text" name="my_theme_options[twitter]" size="40" value="<?php echo stripslashes($options["twitter"]); ?>" />
</td>
</tr>
<tr>
<th scope="row">LinkedIn URL:</th>
<td>
<input type="text" name="my_theme_options[linkedin]" size="40" value="<?php echo stripslashes($options["linkedin"]); ?>" />
</td>
</tr>
</table>
<p class="submit">
<input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
</p>
</form>