<?php /** * Option API * * @package WordPress * @subpackage Option */ /** * Retrieves an option value based on an option name. * * If the option does not exist, and a default value is not provided, * boolean false is returned. This could be used to check whether you need * to initialize an option during installation of a plugin, however that * can be done better by using add_option() which will not overwrite * existing options. * * Not initializing an option and using boolean `false` as a return value * is a bad practice as it triggers an additional database query. * * The type of the returned value can be different from the type that was passed * when saving or updating the option. If the option value was serialized, * then it will be unserialized when it is returned. In this case the type will * be the same. For example, storing a non-scalar value like an array will * return the same array. * * In most cases non-string scalar and null values will be converted and returned * as string equivalents. * * Exceptions: * * 1. When the option has not been saved in the database, the `$default_value` value * is returned if provided. If not, boolean `false` is returned. * 2. When one of the Options API filters is used: {@see 'pre_option_$option'}, * {@see 'default_option_$option'}, or {@see 'option_$option'}, the returned * value may not match the expected type. * 3. When the option has just been saved in the database, and get_option() * is used right after, non-string scalar and null values are not converted to * string equivalents and the original type is returned. * * Examples: * * When adding options like this: `add_option( 'my_option_name', 'value' )` * and then retrieving them with `get_option( 'my_option_name' )`, the returned * values will be: * * - `false` returns `string(0) ""` * - `true` returns `string(1) "1"` * - `0` returns `string(1) "0"` * - `1` returns `string(1) "1"` * - `'0'` returns `string(1) "0"` * - `'1'` returns `string(1) "1"` * - `null` returns `string(0) ""` * * When adding options with non-scalar values like * `add_option( 'my_array', array( false, 'str', null ) )`, the returned value * will be identical to the original as it is serialized before saving * it in the database: * * array(3) { * [0] => bool(false) * [1] => string(3) "str" * [2] => NULL * } * * @since 1.5.0 * * @global wpdb $wpdb WordPress database abstraction object. * * @param string $option Name of the option to retrieve. Expected to not be SQL-escaped. * @param mixed $default_value Optional. Default value to return if the option does not exist. * @return mixed Value of the option. A value of any type may be returned, including * scalar (string, boolean, float, integer), null, array, object. * Scalar and null values will be returned as strings as long as they originate * from a database stored option value. If there is no option in the database, * boolean `false` is returned. */ function get_option( $option, $default_value = false ) { global $wpdb; if ( is_scalar( $option ) ) { $option = trim( $option ); } if ( empty( $option ) ) { return false; } /* * Until a proper _deprecated_option() function can be introduced, * redirect requests to deprecated keys to the new, correct ones. */ $deprecated_keys = array( 'blacklist_keys' => 'disallowed_keys', 'comment_whitelist' => 'comment_previously_approved', ); if ( isset( $deprecated_keys[ $option ] ) && ! wp_installing() ) { _deprecated_argument( __FUNCTION__, '5.5.0', sprintf( /* translators: 1: Deprecated option key, 2: New option key. */ __( 'The "%1$s" option key has been renamed to "%2$s".' ), $option, $deprecated_keys[ $option ] ) ); return get_option( $deprecated_keys[ $option ], $default_value ); } /** * Filters the value of an existing option before it is retrieved. * * The dynamic portion of the hook name