我正在使用WordPress Settings API來存儲設置值。如果一個選項表單有10個表單元素,這意味着我需要有10次add_settings_field
每個都有自己的ID。這意味着爲了讀取設定值,我還需要提出10 get_option
請求,例如,如果我在ajax請求中需要這些設置值。Wordpress設置API和序列化數據
我該如何使用WordPress Settings API將數據序列化,並將這些值存儲在一個數據庫行中,並將數據庫請求的數量限制在最小值?
我正在使用WordPress Settings API來存儲設置值。如果一個選項表單有10個表單元素,這意味着我需要有10次add_settings_field
每個都有自己的ID。這意味着爲了讀取設定值,我還需要提出10 get_option
請求,例如,如果我在ajax請求中需要這些設置值。Wordpress設置API和序列化數據
我該如何使用WordPress Settings API將數據序列化,並將這些值存儲在一個數據庫行中,並將數據庫請求的數量限制在最小值?
我用下面的代碼片段解決我的問題:
$required_options = array("option_1", "option_2");
$my_options = array();
$all_options = wp_load_alloptions();
foreach($all_options as $name => $value) {
if (in_array($name, $required_options)) {
$my_options[$name] = $value;
}
}
我在Ajax請求使用數組$my_options
得到一些我所需要的選項,在我的問題提到。我也使用WordPress的設置API。
我使用WordPress Setting API頁面上描述的過程創建了10個選項的選項表,這意味着我需要對get_option
函數(每次向數據庫發出請求)發出10+個請求。爲了減少請求數量,我將前面提到的代碼片段與add_settings_field函數一起使用。
實施例:
add_settings_field('myprefix_setting-id', 'This is the setting title', 'myprefix_setting_callback_function', 'general', 'myprefix_settings-section-name', $my_options));
跑過可變$my_options
爲被傳遞到$callback
功能使內$my_options
提供給$callback
函數內的代碼(的信息的額外的參數一般用來渲染HTML表單元素)。
然後你需要做的唯一的事情就是在你的$callback
函數中添加額外的參數並相應地使用它。例如: -
function myprefix_setting_callback_function($args) {
echo $args['context'];
}
明顯,你可以重複上述的過程和屬性添加到每個add_settings_field
函數調用,並降低你的數據庫負載。
你可以很容易地把它保留爲10行,但得到/設置1請求。 – h2ooooooo
你會怎麼做? –
嗯 - 獲取它可以緩存('wp_get_alloptions'),但設置似乎需要10個不同的設置調用(以調用適當的操作等)。當第一次閱讀你的問題時,我理解它,因爲你需要通過AJAX單獨獲取/保存每個選項(並且沒有理由這麼做)。 – h2ooooooo