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] => [email protected]
	[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$force_cache parameter був added.

Код wp_load_alloptions() WP 6.0.2

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

	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 );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *