问题描述

应该使用哪一个?

Options APISetings 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛