Wordpress设置API和序列化数据

时间:2013-11-21 13:55:28

标签: php wordpress

我使用WordPress Settings API存储设置值。如果一个选项表单有10个表单元素,这意味着我需要有10次add_settings_field,每个表单都有自己的ID。这意味着,为了读取设置值,我还需要发出10 get_option个请求,例如如果我在ajax请求中需要这些设置值。

如何使用WordPress Settings API序列化数据并将值存储在一个数据库行中,并将数据库请求的数量限制到最小?

1 个答案:

答案 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函数调用中,并减少数据库负载。