問題描述

應該使用哪一個?

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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇