WordPress как на ладони
rgbcode is looking for WordPress developers. Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

get_option()WP 1.5.0

Получает значение указанной настройки (опции).

Функция получает данные из кэша, если это возможно, если нет, то данные берутся из Базы Данных.

Если опция хранится как сериализованная строка, то она при получении автоматически будет раскодирована.

Любые скалярные значения будут возвращены в виде строк.

Возвращаемое значение можно отфильтровать через хук option_(option).

1 раз — 0.0025661 сек (очень медленно) | 50000 раз — 0.20 сек (очень быстро) | PHP 7.4.33, WP 6.4.1

Возвращает

Разное.

  • Значение опции.
  • false — когда указанной опции не существует или не удалось получить её значение.

Использование

get_option( $option, $default );
$option(строка) (обязательный)

Название опции, значение которой нужно получить. Некоторые из доступных опций:

  • admin_email - E-mail администратора блога.
  • blogname - название блога. Устанавливается в настройках.
  • blogdescription - описание блога. Устанавливается в настройках.
  • blog_charset - Кодировка блога. Устанавливается в настройках.
  • date_format - формат даты. Устанавливается в настройках.
  • default_category - категория постов по умолчанию. Устанавливается в настройках.
  • home - Адрес домашней страницы блога. Устанавливается в основных настройках.
  • siteurl - Адрес WordPress. Устанавливается в основных настройках.

    Заметка: siteurl отличается от get_bloginfo('siteurl') (который возвращает url домашней страницы блога). И не отличается от get_bloginfo('wpurl').

  • template - название текущей темы.
  • start_of_week - день с которого начинается неделя. Устанавливается в основных настройках.
  • upload_path - каталог загрузки по умолчанию. Устанавливается в настройках.
  • posts_per_page - максимальное число постов на странице. Устанавливается в настройках чтения.
  • posts_per_rss - максимальное число постов выводимых в фид. Устанавливается в настройках чтения.

Полный список опций смотрите здесь.

$default(строка/число/логический)
Значение по умолчанию, которое нужно вернуть, если опции в БД не существует.
По умолчанию: false

Примеры

1

#1 Выведем кодировку блога:

<p>Текущая кодировка: <?php echo get_option('blog_charset'); ?> </p>
0

#2 Выведем название блога в теге H1:

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

OR short variant:

<h1><?= get_option('blogname'); ?></h1>
0

#3 Получим email администратора сайта в переменную $admin_email:

$admin_email = get_option('admin_email');

Заметки

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

Список изменений

С версии 1.5.0 Введена.

Код get_option() WP 6.4.3

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, `$option`, refers to the option name.
	 *
	 * Returning a value other than false from the filter will short-circuit retrieval
	 * and return that value instead.
	 *
	 * @since 1.5.0
	 * @since 4.4.0 The `$option` parameter was added.
	 * @since 4.9.0 The `$default_value` parameter was added.
	 *
	 * @param mixed  $pre_option    The value to return instead of the option value. This differs from
	 *                              `$default_value`, 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_value The fallback value to return if the option does not exist.
	 *                              Default false.
	 */
	$pre = apply_filters( "pre_option_{$option}", false, $option, $default_value );

	/**
	 * Filters the value of all existing options before it is retrieved.
	 *
	 * Returning a truthy value from the filter will effectively short-circuit retrieval
	 * and return the passed value instead.
	 *
	 * @since 6.1.0
	 *
	 * @param mixed  $pre_option    The value to return instead of the option value. This differs from
	 *                              `$default_value`, 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        Name of the option.
	 * @param mixed  $default_value The fallback value to return if the option does not exist.
	 *                              Default false.
	 */
	$pre = apply_filters( 'pre_option', $pre, $option, $default_value );

	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() ) {
		$alloptions = wp_load_alloptions();

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

			if ( false === $value ) {
				// Prevent non-existent options from triggering multiple queries.
				$notoptions = wp_cache_get( 'notoptions', 'options' );

				// Prevent non-existent `notoptions` key from triggering multiple key lookups.
				if ( ! is_array( $notoptions ) ) {
					$notoptions = array();
					wp_cache_set( 'notoptions', $notoptions, 'options' );
				} elseif ( 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_value  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_value, $option, $passed_default );
				}

				$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.
					$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_value, $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_value, $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' ), true ) ) {
		$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 );
}
10 комментариев
    Войти