WordPress:更新序列化选项数据集中的各个元素

时间:2010-11-09 13:44:03

标签: wordpress-plugin wordpress

在WordPress 3.0中,我需要将存储在wp_options表中的各个选项更新为序列化数据。 (对于ajax'ed UI)

因为我在更新时只有一个键值对(不是整个选项集),我需要手动修改我以序列化形式存储的整个数组,然后更新整个数据。

我找不到本地的WP功能,所以我使用下面的功能,它工作正常。

我的问题是:这是最好的方法,还是有一个WP包装器函数 - 或者是 - 它应该写一个扩展现有WP类的类吗?

/**
  * Function to fetch, modify and store a serialized options string 
  * Used for updating an individual key-value pair within a larger data set
  * 
  * $opt_group is the name if the option in the wp_options table
  * it contains serialized data representing an array of individual oprions relating
  * to an 'options-group of a theme framework
  */

function alt_update_option($opt_key,$opt_val,$opt_group){   
    // get options-data as it exists before update
    $options = get_option($opt_group);
    // update it
    $options[$opt_key] = $value;
    // store updated data
    update_option($opt_group,$options);
}

1 个答案:

答案 0 :(得分:0)

AFAIK无法更新序列化选项的单个元素,您必须检索并发送整个组。

您可以将选项拆分为数据库中的不同wp_options以减少一些数据大小开销,但无论如何,您仍然会在每个请求上访问数据库,这可能是最昂贵的操作

基本上,如果您只是出于性能原因而只想修改一个元素,我不会担心它。 Wordpress在幕后做了很多事情,可能会破坏你设法实现的任何优化。如果你只是想这样做,抱歉,我认为这是不行的。