Wordpress存储主题选项

时间:2011-03-04 21:11:24

标签: database wordpress serialization themes options

我目前使用update_option(name,value)分别存储我的所有主题选项;函数,但我想将它们全部放入一个数组,序列化它,并在数据库中存储一个选项。

效率更高吗?

2 个答案:

答案 0 :(得分:4)

是的,如果您在从DB重新配置配置后进行一些处理(读取:反序列化)!

根据您将查询保存到数据库的选项数量。

答案 1 :(得分:1)

不需要序列化。有一些内置方法可以将主题选项整齐地存储在一个数组中。

这是一个包含所有必要代码的完整示例:

首先,在你的主题的functions.php文件中,你必须通过编写一个小函数并使用WordPress钩子来激活它来注册你将要使用的设置:

<?php
    function my_theme_admin_init() {
        register_setting('my_options', 'my_theme_options');
    }

    add_action('admin_init', 'my_theme_admin_init');
?>

然后,在你想要使用这些选项的地方,使用这个html和php。 (请注意,表单发布到options.php。这样做可以利用WordPress内置功能来处理为您保存的选项):

<form method="post" action="options.php">
    <?php 
    // Load the options from the WP db
    $options = get_option('my_theme_options');
    // WP built-in function to display the appropriate fields for saving options
    settings_fields("my_options"); ?>
    <table class="form-table">
        <tr>
            <th scope="row">Facebook URL:</th>
            <td>
                <input type="text" name="my_theme_options[facebook]" size="40" value="<?php echo stripslashes($options["facebook"]); ?>" />
            </td>
        </tr>
        <tr>
            <th scope="row">Twitter URL:</th>
            <td>
                <input type="text" name="my_theme_options[twitter]" size="40" value="<?php echo stripslashes($options["twitter"]); ?>" />
            </td>
        </tr>
        <tr>
            <th scope="row">LinkedIn URL:</th>
            <td>
                <input type="text" name="my_theme_options[linkedin]" size="40" value="<?php echo stripslashes($options["linkedin"]); ?>" />
            </td>
        </tr>
    </table>
    <p class="submit">
        <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
    </p>
</form>