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
No comments yet... Be the first to leave a reply!