option value, ... ) */ public static function update_options( $array ) { $names = array_keys( $array ); foreach ( array_diff( $names, self::get_option_names(), self::get_option_names( 'non_compact' ) ) as $unknown_name ) { trigger_error( sprintf( 'Invalid Jetpack option name: %s', $unknown_name ), E_USER_WARNING ); unset( $array[$unknown_name] ); } foreach ( array_intersect( $names, self::get_option_names( 'non_compact' ) ) as $name ) { update_option( "jetpack_$name", $array[$name] ); unset( $array[$name] ); } $options = get_option( 'jetpack_options' ); if ( !is_array( $options ) ) { $options = array(); } return update_option( 'jetpack_options', array_merge( $options, $array ) ); } /** * Deletes the given option. May be passed multiple option names as an array. * Updates jetpack_options and/or deletes jetpack_$name as appropriate. * * @param string|array $names */ public static function delete_option( $names ) { $names = (array) $names; foreach ( array_diff( $names, self::get_option_names(), self::get_option_names( 'non_compact' ) ) as $unknown_name ) { trigger_error( sprintf( 'Invalid Jetpack option name: %s', $unknown_name ), E_USER_WARNING ); } foreach ( array_intersect( $names, self::get_option_names( 'non_compact' ) ) as $name ) { delete_option( "jetpack_$name" ); } $options = get_option( 'jetpack_options' ); if ( !is_array( $options ) ) { $options = array(); } $to_delete = array_intersect( $names, self::get_option_names(), array_keys( $options ) ); if ( $to_delete ) { foreach ( $to_delete as $name ) { unset( $options[$name] ); } return update_option( 'jetpack_options', $options ); } return true; } }