web-dev-qa-db-ja.com

配列であるwp_optionsオプションに値を追加する方法

配列であるwp_optionsの登録済みオプションにオプション値を追加するための最良の方法は何ですか? phpmyadminで私はoption_valueフィールドを参照してください

a:9:{i:3;s:15:"value1";i:6;s:5:"value2";i:7;s:21:"value3";i:8;s:15:"value4";i:9;s:7:"value5";i:10;s:4:"value6";i:11;s:5:"value7";i:12;s:8:"value8";i:13;s:7:"value9";}

どうやってvalue10を追加できますか? update_optionはoption_value全体を置き換えますよね?

2
alex

あなたがあなたの質問に示しているオプションは直列化された配列です。 get_option() でオプションを取得すると、配列は返されますが、シリアル化は行われません。これはget_optionが使用する maybe_unserialize() によって行われます。取得した配列に new 'key' => 'value'のペアを追加してから update_option() でオプションを更新するだけで、オプションに追加の値が追加されます。


コメントで述べたように、なぜそれがうまくいかないのかわからないし、前述したように、これは間違いなくうまくいくいくつかの典型的なコードです:

// this is just for proof of concept   
// add new data, we don't want to temper with the original
// it is an array to resemble your case
$new_new_arr = array(
    'key01' => 'value01',
    'key02' => 'value02'
);
// debug the data
print_r( $new_new_arr );
// now we actually add it tp wp_options
add_option( 'new_new_opt', $new_new_arr );
// lets get back what we added
$get_new_new_arr = get_option( 'new_new_opt' );
// debug the data
print_r( $get_new_new_arr );
// lets create the second array with the additional key => value pair
$add_new_new_opt = array( 'key03' => 'value03' );
// debug the data
print_r( $add_new_new_opt );
// lets combine, merge the arrays
$upd_new_new_arr = array_merge( $get_new_new_arr, $add_new_new_opt );
// debug the data
print_r( $upd_new_new_arr );
// now update our option
update_option( 'new_new_opt', $upd_new_new_arr );
// get back the updated option
$get_upd_new_new_arr = get_option( 'new_new_opt' );
// debug the data
print_r( $get_upd_new_new_arr );
// lets cleanup and delete the option
delete_option( 'new_new_opt' );
5
Nicolai