问题描述
应该使用哪一个?
Options API 和 Setings API 有什么区别?
我有一个主题,超过 100 个管理选项,我该怎么注册& 存储他们?在这一刻,我使用 Options API,但我并不满意,每一个选项都被单独注册,所以他们创建了大量的数据库查询。
我现在看到存储 WordPress 选项/设置的三种方式:
选项 API – 旧 (最坏的) 方式。
(我正在使用这个)
<form method="post" action="options.php">
<?php wp_nonce_field('update-options'); ?>
// all the inputs
<input type="hidden" name="action" value="update" />
<input type="hidden" name="page_options" value="option1,option2,option3,..." />
<p class="submit">
<input type="submit" value="<?php _e('Save Changes') ?>" />
</p>
</form>
然后在前端:
echo get_option('option1');
看起来很丑,我不认为这是存储大量选项的正确方法 (我很乐意为他们分组) 。
2. 选项 API – 1 选项作为一个大阵列。
我不知道在这里如何更新这个数组使用 html 表单,任何人?我相信它应该像:
$opt['option1'] = foo
$opt['option2'] = foo
$opt['option3'] = bar
update_option('theme_settings',$opt);
然后在前端:
$settings = get_option('theme_settings');
echo $settings['option1'];
echo $settings['option2'];
echo $settings['option3'];
我听说它真的减少了查询的数量,我把它们都作为一个选项。我喜欢使用这个,但如上所述,我不知道如何在 Wordpress 管理表单中更新这个数组的选项。我猜:<input type="hidden" name="theme_settings" value="option1,option2,option3,..." />
会覆盖数组,而不是添加新的元素?
3. 设置 API – 新的方式。
需要大量附加代码:
function register_theme_settings() {
//register our settings
register_setting( 'theme-settings', 'option1' );
register_setting( 'theme-settings', 'option2' );
register_setting( 'theme-settings', 'option3' );
register_setting( 'theme-settings', 'option4' );
register_setting( 'theme-settings', 'option5' );
// imagine this for 100 and more options
};
而且我不知道这个和一个选项作为数组的方法有什么区别?
长话短说所以,我应该如何投影我的主题设置存储,以便它能够快速的存储所有的选项/设置在一个地方,所以我将能够,例如,回声/转储他们所有与一个简单的功能 (是,我想做的很糟糕,但我不知道如何使用此设置 API) 。到目前为止,第二种方法看起来最好。
最佳解决方案
Options API 主要是一个数据库 API,可以方便地在数据库的 options 表中获取和存储值。
Settings API 是一个接口 API 。它允许您以适应未来对 WordPress 界面的更改的方式构建设置屏幕,以及自动处理安全性 (不间断和白名单和验证等),而且比 rolling-your-own 代码更容易。
更多关于设置 API:http://ottopress.com/2009/wordpress-settings-api-tutorial/
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。