Wordpress 更新序列化选项数据集中的单个元素

Wordpress 更新序列化选项数据集中的单个元素,wordpress,Wordpress,在WordPress 3.0中,我需要将存储在wp_options表中的各个选项更新为序列化数据。(适用于ajax的UI) 由于更新时只有一个键值对(而不是整个选项集),因此需要手动修改以序列化形式存储的整个数组,然后更新整个数组 我找不到用于此的本机WP函数,因此我使用下面的函数来执行此操作,并且工作正常 我的问题是:这是最好的方法,还是有一个WP包装函数来实现这一点?或者,是否应该编写一个扩展现有WP类的类 /** * Function to fetch, modify and stor

在WordPress 3.0中,我需要将存储在wp_options表中的各个选项更新为序列化数据。(适用于ajax的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);
}

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

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


基本上,如果出于性能原因只想修改一个元素,我不会担心。Wordpress在幕后做的事情太多了,这可能会粉碎你试图实现的任何优化。如果您只是想这样做,对不起,我认为这是不可能的。

我理解,最终您将不得不检索、更新并发送整个组,因为DB引擎无法在内部执行此操作。因此,需要我编写的函数(或类似的函数)。但是作为一种最佳实践,WP已经“本机”提供的功能应该优先于您自己的功能,……所以这就是我的问题:WP是否为我在这里需要做的事情提供了功能?我已经将我的选项分为不同的“WP_选项”,这就是opt_组所代表的。目前,您已经拥有了最佳选项。FYI,对于未来WordPress的特定问题,考虑到STACKExchange的姐妹站点WordPress的答案: