我使用WordPress Settings API存储设置值。如果一个选项表单有10个表单元素,这意味着我需要有10次add_settings_field
,每个表单都有自己的ID。这意味着,为了读取设置值,我还需要发出10 get_option
个请求,例如如果我在ajax请求中需要这些设置值。
如何使用WordPress Settings API序列化数据并将值存储在一个数据库行中,并将数据库请求的数量限制到最小?
答案 0 :(得分:0)
我使用以下代码段解决了我的问题:
$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。
我正在创建一个包含10多个选项的选项表单,使用WordPress Setting API页面上描述的过程,这意味着我需要向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
函数中获取其他参数并相应地使用它。 E.g:
function myprefix_setting_callback_function($args) {
echo $args['context'];
}
很明显,您可以重复上述过程并将该属性添加到每个add_settings_field
函数调用中,并减少数据库负载。