wp_load_alloptions()WP 2.2.0

Загружает в кэш все авто-загружаемые опции WordPress. Получает все опции сайта.

Если нет авто-загружаемых опций, то загрузить все опции.

Метка о том является ли опция авто-загружаемой ставиться при добавлении опции или при её обновлении в параметре $autoload:

add_option( $name, $value, $deprecated, $autoload );
// или
update_option( $option_name, $newvalue, $autoload );

Эта функция вызывается автоматически на раннем этапе загрузки WordPress. Она загружает все опции из таблицы wp_options. Далее, когда мы получаем опцию, с помощью get_option() опция уже берется из кэша, а не из базы данных.

Функция кэширует результат своей работы, поэтому долго работает только первый вызов функции, все остальные вызовы работают очень быстро.

Работает на основе: wp_cache_get(), wp_cache_add()
1 раз — 0.003439 сек (очень медленно) | 50000 раз — 0.05 сек (скорость света) | PHP 7.0.32, WP 5.1.1

Возвращает

Массив. Массив всех загруженных в кэш опций. Где ключ - название опции, а значение - значение опции.

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

$alloptions = wp_load_alloptions();

Примеры

0

#1 Получим все опции сайта

$alloptions = wp_load_alloptions();

В результате $alloptions будет содержать такой массив:

Array (
	[siteurl] => http://wp-kama.ru/
	[blogname] => WordPress как на ладони
	[blogdescription] => функции, хаки и статьи для начинающих
	[users_can_register] => 1
	[admin_email] => admin@bk.ru
	[start_of_week] => 1
	[use_balanceTags] => 
	[require_name_email] => 1
	[comments_notify] => 
	[posts_per_rss] => 15
	[rss_use_excerpt] => 1
	[default_category] => 1
	[default_comment_status] => open
	[default_ping_status] => open
	...

Заметки

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

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

С версии 2.2.0 Введена.
С версии 5.3.1 The $force_cache parameter was added.

Код wp_load_alloptions() WP 6.5.2

function wp_load_alloptions( $force_cache = false ) {
	global $wpdb;

	/**
	 * Filters the array of alloptions before it is populated.
	 *
	 * Returning an array from the filter will effectively short circuit
	 * wp_load_alloptions(), returning that value instead.
	 *
	 * @since 6.2.0
	 *
	 * @param array|null $alloptions  An array of alloptions. Default null.
	 * @param bool       $force_cache Whether to force an update of the local cache from the persistent cache. Default false.
	 */
	$alloptions = apply_filters( 'pre_wp_load_alloptions', null, $force_cache );
	if ( is_array( $alloptions ) ) {
		return $alloptions;
	}

	if ( ! wp_installing() || ! is_multisite() ) {
		$alloptions = wp_cache_get( 'alloptions', 'options', $force_cache );
	} else {
		$alloptions = false;
	}

	if ( ! $alloptions ) {
		$suppress      = $wpdb->suppress_errors();
		$alloptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options WHERE autoload = 'yes'" );
		if ( ! $alloptions_db ) {
			$alloptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options" );
		}
		$wpdb->suppress_errors( $suppress );

		$alloptions = array();
		foreach ( (array) $alloptions_db as $o ) {
			$alloptions[ $o->option_name ] = $o->option_value;
		}

		if ( ! wp_installing() || ! is_multisite() ) {
			/**
			 * Filters all options before caching them.
			 *
			 * @since 4.9.0
			 *
			 * @param array $alloptions Array with all options.
			 */
			$alloptions = apply_filters( 'pre_cache_alloptions', $alloptions );

			wp_cache_add( 'alloptions', $alloptions, 'options' );
		}
	}

	/**
	 * Filters all options after retrieving them.
	 *
	 * @since 4.9.0
	 *
	 * @param array $alloptions Array with all options.
	 */
	return apply_filters( 'alloptions', $alloptions );
}