WP_LOAD_ALLOPTIONS() │ WP 2.2.0
Функция WP_LOAD_ALLOPTIONS() загружает и кэширует все автозагружаемые параметры (options), если они доступны, или все параметры, если их нет.
Использование
Эта функция используется вместе с функциями кэширования, такими как wp_cache_get() и wp_cache_add(). При первом вызове она может работать медленно, но после кэширования становится значительно быстрее.
Пример времени выполнения:
- 1 раз — 0.003439 секунды (очень медленно)
- 50000 раз — 0.05 секунды (очень быстро)
PHP версия: 7.0.32, WP версия: 5.1.1
Хуки (Hooks) функции
pre_wp_load_alloptionspre_cache_alloptionsalloptions
Возвращаемое значение
Функция возвращает массив (Array). Этот массив содержит список всех параметров.
Как использовать
Для вызова функции используется следующий синтаксис:
wp_load_alloptions( $force_cache );
- $force_cache (boolean): указывает, нужно ли принудительно обновить локальный кэш из постоянного кэша. Значение по умолчанию:
false.
Примеры использования
1. Получение всех параметров сайта
Вы можете получить все параметры вашего сайта следующим образом:
$alloptions = wp_load_alloptions();
В результате переменная $alloptions будет содержать массив, похожий на следующий:
Array (
[siteurl] => http://wp-kama.com/
[blogname] => WordPress как на ладони
[blogdescription] => Функции, советы и статьи для начинающих
[users_can_register] => 1
[admin_email] => admin@wp-kama.com
[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
...
)
2. Получение всех временных параметров без временных ограничений
Если вы хотите получить все временные параметры, вы можете использовать следующий код:
$all_options = wp_load_alloptions();
$all_transients = array();
foreach ( $all_options as $name => $value ) {
if ( strstr( $name, '_transient' ) ) {
$all_transients[ $name ] = $value;
}
}
print_r( $all_transients );
Примечания
- Глобальный объект:
$wpdb– это объект абстракции базы данных WordPress.
Изменения в версии
- С версии 2.2.0 — функция была введена.
- С версии 5.3.1 — добавлен параметр
$force_cache.
Код функции
Вот код функции wp_load_alloptions() из файла wp-includes/option.php:
function wp_load_alloptions( $force_cache = false ) {
global $wpdb;
$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 IN ( '" . implode( "', '", esc_sql( wp_autoload_values_to_autoload() ) ) . "' )" );
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() ) {
$alloptions = apply_filters( 'pre_cache_alloptions', $alloptions );
wp_cache_add( 'alloptions', $alloptions, 'options' );
}
}
return apply_filters( 'alloptions', $alloptions );
}
Сопутствующие функции
add_option()admin_url()delete_option()get_bloginfo()get_home_path()get_home_url()get_option()get_site_url()home_url()is_ssl()site_url()update_option()wp_get_environment_type()
Таким образом, функция wp_load_alloptions() помогает разработчикам и пользователям WordPress получать и кэшировать параметры, что существенно ускоряет работу с сайтом.