Advertisements

add_option

Definition:
function add_option( $option, $value = '', $deprecated = '', $autoload = 'yes' ) {}

Add a new option.
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: Name of option to add. Expected to not be SQL-escaped.
  • mixed $value: Optional. Option value, can be anything. Expected to not be SQL-escaped.
  • mixed $deprecated: Optional. Description. Not used anymore.
  • bool $autoload: Optional. Default is enabled. Whether to load the option when WordPress starts up.

Return values

returns:False if option was not added and true if option was added.

Defined actions

  • add_option
    do_action( 'add_option', $option, $_value );
  • add_option_{$option}
    do_action( "add_option_{$option}", $option, $_value );
  • added_option
    do_action( 'added_option', $option, $_value );

Source code

function add_option( $option, $value = '', $deprecated = '', $autoload = 'yes' ) {

	global $wpdb;



	if ( !empty( $deprecated ) )

		_deprecated_argument( __FUNCTION__, '2.3' );



	$option = trim($option);

	if ( empty($option) )

		return false;



	wp_protect_special_option( $option );



	if ( is_object($value) )

		$value = clone $value;



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



	// Make sure the option doesn't already exist. We can check the 'notoptions' cache before we ask for a db query

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

	if ( !is_array( $notoptions ) || !isset( $notoptions[$option] ) )

		if ( false !== get_option( $option ) )

			return false;



	$_value = $value;

	$value = maybe_serialize( $value );

	$autoload = ( 'no' === $autoload ) ? 'no' : 'yes';

	do_action( 'add_option', $option, $_value );

	if ( ! defined( 'WP_INSTALLING' ) ) {

		if ( 'yes' == $autoload ) {

			$alloptions = wp_load_alloptions();

			$alloptions[$option] = $value;

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

		} else {

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

		}

	}



	// This option exists now

	$notoptions = wp_cache_get( 'notoptions', 'options' ); // yes, again... we need it to be fresh

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

		unset( $notoptions[$option] );

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

	}



	$result = $wpdb->query( $wpdb->prepare( "INSERT INTO `$wpdb->options` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)", $option, $value, $autoload ) );



	if ( $result ) {

		do_action( "add_option_{$option}", $option, $_value );

		do_action( 'added_option', $option, $_value );

		return true;

	}

265

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 )

Google+ photo

You are commenting using your Google+ 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 )

Connecting to %s

%d bloggers like this: