选项和设置之间有什么区别?


14

我应该使用哪一个?

Options APISettings API有什么区别?

我有一个包含100多个管理选项的主题,我该如何注册和存储它们?目前,我正在使用Options API,但我对此不太满意,每个选项都单独注册,因此它们会创建很多数据库查询。

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

1. Options 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. Options 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;博士所以,我应该怎么项目我的主题设置存储,以便将工作速度快存储的所有选项/设置在一个地方,所以我就可以,例如,回声/甩掉他们全部用一个简单的函数(是的,我想做的不好,但是我不知道如何使用此设置API来做到这一点。到目前为止,第二种方法看起来是最好的。

Answers:


11

Options API主要是数据库API,使您可以轻松地在数据库的options表中获取和存储值。

设置API是接口API。它允许您以适应将来对WordPress界面的更改的方式构建设置屏幕,并且比滚动自己的代码更轻松,自动地处理安全性(随机数,白名单和验证等)。

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


3
+1。设置API是正确的方法,它将处理您的100个主题选项,而无需担心。一些傻瓜写了一篇非常漫长的教程,将Settings API集成到WordPress Themes中
Chip Bennett

奥托,@ Chip Bennett,谢谢。我还有另一个问题-根据文档,我应该为每个管理页面创建多个设置组,这会以某种方式影响性能/查询数量吗?正如我在阅读时间过长的问题中所解释的,将所有选项都放在一个组中(这就是“主题设置”)有什么问题吗?:)
Wordpressor '02

2
我建议使用一个选项组。如果需要UI组织,请使用“设置”部分和/或“设置”页面选项卡。
Chip Bennett

@Chip Bennett,好的,非常感谢:)很棒的教程。
Wordpressor

@ChipBennett链接:您的注释中将Settings API合并到WordPress主题中的行为已损坏。
维杰·查夫达
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.