Advertisements

update_option

Definition:
function update_option( $option, $newvalue ) {}

Update the value of an option that was already added.
You do not need to serialize values. If the value needs to be serialized, then it will be serialized before it is inserted into the database. Remember, resources can not be serialized or added as an option.

Parameters

  • string $option: Option name. Expected to not be SQL-escaped.
  • mixed $newvalue: Option value. Expected to not be SQL-escaped.

Return values

returns:False if value was not updated and true if value was updated.

Defined filters

  • pre_update_option_$option
    apply_filters( 'pre_update_option_' . $option, $newvalue, $oldvalue )

Defined actions

  • update_option
    do_action( 'update_option', $option, $oldvalue, $_newvalue );
  • update_option_{$option}
    do_action( "update_option_{$option}", $oldvalue, $_newvalue );
  • updated_option
    do_action( 'updated_option', $option, $oldvalue, $_newvalue );

Source code

function update_option( $option, $newvalue ) {

	global $wpdb;



	$option = trim($option);

	if ( empty($option) )

		return false;



	wp_protect_special_option( $option );



	if ( is_object($newvalue) )

		$newvalue = clone $newvalue;



	$newvalue = sanitize_option( $option, $newvalue );

	$oldvalue = get_option( $option );

	$newvalue = apply_filters( 'pre_update_option_' . $option, $newvalue, $oldvalue );



	// If the new and old values are the same, no need to update.

	if ( $newvalue === $oldvalue )

		return false;



	if ( false === $oldvalue )

		return add_option( $option, $newvalue );



	$notoptions = wp_cache_get( 'notoptions', 'options' );

	if ( is_array( $notoptions ) && isset( $notoptions[$option] ) ) {

		unset( $notoptions[$option] );

		wp_cache_set( 'notoptions', $notoptions, 'options' );

	}



	$_newvalue = $newvalue;

	$newvalue = maybe_serialize( $newvalue );



	do_action( 'update_option', $option, $oldvalue, $_newvalue );

	if ( ! defined( 'WP_INSTALLING' ) ) {

		$alloptions = wp_load_alloptions();

		if ( isset( $alloptions[$option] ) ) {

			$alloptions[$option] = $_newvalue;

			wp_cache_set( 'alloptions', $alloptions, 'options' );

		} else {

			wp_cache_set( $option, $_newvalue, 'options' );

		}

	}



	$result = $wpdb->update( $wpdb->options, array( 'option_value' => $newvalue ), array( 'option_name' => $option ) );



	if ( $result ) {

		do_action( "update_option_{$option}", $oldvalue, $_newvalue );

		do_action( 'updated_option', $option, $oldvalue, $_newvalue );

		return true;

	}

3185

Advertisements

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: