How do I add a value to a wp_options option that is an array?

The option you’re showing in your question is a serialized array. Retrieving the option with get_option() gives you back the array, but unserialized. This is done by maybe_unserialize(), which get_option uses. Just add a new 'key' => 'value' pair to the array you retrieved and then update the option with update_option(), et voilà you have added the additional value to your option.


As said in the comment can’t see why it wouldn’t work and as mentioned, here is some exemplary code that definitely works:

// 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' );