选项和设置有什么不同?

时间:2012-02-02 作者:Wordpressor

我应该用哪一个?

两者的区别是什么Options APISetings API?

我有一个超过100个管理选项的主题,我应该如何注册&;存储它们?此时我正在使用Options API 但我对它不太满意,每个选项都是单独注册的,所以它们会创建很多数据库查询。

目前我看到了三种存储WordPress选项/设置的方法:

1。选项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    
};
我不确定这和以一个选项作为数组的方法有什么区别?

tl;dr 那么,我应该如何规划我的主题设置存储working faststore 所有选项/设置in one place 例如,我将能够用一个简单的函数来回送/转储它们(是的,我很想这样做,但我不知道如何使用这个设置API)。第二种方法看起来是目前为止最好的。

1 个回复
最合适的回答,由SO网友:Otto 整理而成

Options API主要是一个数据库API,允许您轻松地在数据库的Options表中获取和存储值。

设置API是一个接口API。它允许您以一种适应WordPress界面未来变化的方式构建设置屏幕,以及自动且比滚动自己的代码更容易地处理安全性(nonce、白名单和验证等)。

有关设置API的详细信息:http://ottopress.com/2009/wordpress-settings-api-tutorial/

结束

相关推荐

如果自定义管理页面未挂钩到ADD_OPTIONS_PAGE(),则不会显示设置API已更新消息

一直在使用设置API,发现只有通过add\\u options\\u page()将设置页面连接到WordPress菜单时,才会显示消息(用于成功或错误)。其他任何操作都不起作用,例如add\\u dashboard\\u page()。想知道这是不是真的?我尝试使用的示例代码是包含“RegisteredSettingsTest”类的答案Where to hook register_settings for Settings API when also want to update options out