WordPress at a glance

get_option() WP 1.5.0

Gets the value of the specified option by option name.

The function retrieves data from the cache, if it is possible, if not, the data is taken from the Database.

If the option is stored as a serialized string, it will be automatically unserialized on return.

Any scalar values will be returned as strings.

The return value can be filtered through the option_(option) hook.

✈ 1 time = 0.001619s = very slow | 50000 times = 1.89s = fast | PHP 7.0.32, WP 5.1.1
Return

Mixed/false. The value of the option. False if the option doesn't exist or cannot be retrieved.

Usage

get_option( $option, $default );
$option(string) (required)
Name of option to retrieve. Expected to not be SQL-escaped.
$default(mixed)
Optional.
Default: value to return if the option does not exist

Usage

get_option( $option, $default );
$option(string) (required)

Name of option to retrieve. Expected to not be SQL-escaped.

Some of the options names, that specified on settings admin page:

  • admin_email - E-mail of the site administrator.
  • blogname
  • blogdescription
  • blog_charset
  • date_format
  • default_category - defaul posts category.
  • home - URL of the site home page.
  • siteurl - URL of the admin home page.

    Note: siteurl differs from the get_bloginfo('siteurl') (which retirn the URL of home page), but not differs from the get_bloginfo('wpurl').

  • template - name of the current theme.
  • start_of_week - the first day of a week.
  • upload_path - default upload folder (dir).
  • posts_per_page - max number of posts for archive page.
  • posts_per_rss -  max number of posts for RSS.

The full list of the options see here.

$default(mixed)
Optional. Default value to return if the option does not exist.
Default: false

Examples

#1 Display the site name in H1 tag:

<h1><?php echo get_option('blogname'); ?></h1>

#2 Display the site charset:

<p>Current charset: <?php echo get_option('blog_charset'); ?> </p>

#3 Place the site admin email into the $admin_email variable:

$admin_email = get_option('admin_email');

Notes

  • Global. wpdb. $wpdb WordPress database abstraction object.

Changelog

Since 1.5.0 Introduced.

Code of get option: wp-includes/option.php WP 5.2.2

<?php
function get_option( $option, $default = false ) {
	global $wpdb;

	$option = trim( $option );
	if ( empty( $option ) ) {
		return false;
	}

	/**
	 * Filters the value of an existing option before it is retrieved.
	 *
	 * The dynamic portion of the hook name, `$option`, refers to the option name.
	 *
	 * Passing a truthy value to the filter will short-circuit retrieving
	 * the option value, returning the passed value instead.
	 *
	 * @since 1.5.0
	 * @since 4.4.0 The `$option` parameter was added.
	 * @since 4.9.0 The `$default` parameter was added.
	 *
	 * @param bool|mixed $pre_option The value to return instead of the option value. This differs from
	 *                               `$default`, which is used as the fallback value in the event the option
	 *                               doesn't exist elsewhere in get_option(). Default false (to skip past the
	 *                               short-circuit).
	 * @param string     $option     Option name.
	 * @param mixed      $default    The fallback value to return if the option does not exist.
	 *                               Default is false.
	 */
	$pre = apply_filters( "pre_option_{$option}", false, $option, $default );

	if ( false !== $pre ) {
		return $pre;
	}

	if ( defined( 'WP_SETUP_CONFIG' ) ) {
		return false;
	}

	// Distinguish between `false` as a default, and not passing one.
	$passed_default = func_num_args() > 1;

	if ( ! wp_installing() ) {
		// prevent non-existent options from triggering multiple queries
		$notoptions = wp_cache_get( 'notoptions', 'options' );
		if ( isset( $notoptions[ $option ] ) ) {
			/**
			 * Filters the default value for an option.
			 *
			 * The dynamic portion of the hook name, `$option`, refers to the option name.
			 *
			 * @since 3.4.0
			 * @since 4.4.0 The `$option` parameter was added.
			 * @since 4.7.0 The `$passed_default` parameter was added to distinguish between a `false` value and the default parameter value.
			 *
			 * @param mixed  $default The default value to return if the option does not exist
			 *                        in the database.
			 * @param string $option  Option name.
			 * @param bool   $passed_default Was `get_option()` passed a default value?
			 */
			return apply_filters( "default_option_{$option}", $default, $option, $passed_default );
		}

		$alloptions = wp_load_alloptions();

		if ( isset( $alloptions[ $option ] ) ) {
			$value = $alloptions[ $option ];
		} else {
			$value = wp_cache_get( $option, 'options' );

			if ( false === $value ) {
				$row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $option ) );

				// Has to be get_row instead of get_var because of funkiness with 0, false, null values
				if ( is_object( $row ) ) {
					$value = $row->option_value;
					wp_cache_add( $option, $value, 'options' );
				} else { // option does not exist, so we must cache its non-existence
					if ( ! is_array( $notoptions ) ) {
						$notoptions = array();
					}
					$notoptions[ $option ] = true;
					wp_cache_set( 'notoptions', $notoptions, 'options' );

					/** This filter is documented in wp-includes/option.php */
					return apply_filters( "default_option_{$option}", $default, $option, $passed_default );
				}
			}
		}
	} else {
		$suppress = $wpdb->suppress_errors();
		$row      = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $option ) );
		$wpdb->suppress_errors( $suppress );
		if ( is_object( $row ) ) {
			$value = $row->option_value;
		} else {
			/** This filter is documented in wp-includes/option.php */
			return apply_filters( "default_option_{$option}", $default, $option, $passed_default );
		}
	}

	// If home is not set use siteurl.
	if ( 'home' == $option && '' == $value ) {
		return get_option( 'siteurl' );
	}

	if ( in_array( $option, array( 'siteurl', 'home', 'category_base', 'tag_base' ) ) ) {
		$value = untrailingslashit( $value );
	}

	/**
	 * Filters the value of an existing option.
	 *
	 * The dynamic portion of the hook name, `$option`, refers to the option name.
	 *
	 * @since 1.5.0 As 'option_' . $setting
	 * @since 3.0.0
	 * @since 4.4.0 The `$option` parameter was added.
	 *
	 * @param mixed  $value  Value of the option. If stored serialized, it will be
	 *                       unserialized prior to being returned.
	 * @param string $option Option name.
	 */
	return apply_filters( "option_{$option}", maybe_unserialize( $value ), $option );
}

Related Functions

From tag: Options API (settings)

More from category: Site Options (settings)

No comments
    Hello, !     Log In . Register