問題描述

應該使用哪一個?

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