2011-03-04 88 views
2

我目前使用update_option(name,value)單獨存儲所有主題選項;函數,但我正在考慮將它們全部放入數組中,將其序列化,並在數據庫中存儲單個選項。WordPress存儲主題選項

這樣更有效率嗎?

回答

4

是的,如果你在從DB獲取配置之後做了一些處理(讀取:反序列化)!

根據選項的數量,您將查詢保存到數據庫。

+0

感謝您的答覆! – 2011-03-04 23:18:36

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>