Заранее загружает указанные опции сети в объектный кеш одним запросом к базе данных.
Заранее загружает указанные опции сети в объектный кеш одним запросом к базе данных.
Загружаются только опции, которых ещё нет в кеше.
Опции, отсутствующие в базе данных, запоминаются отдельно, чтобы последующие обращения также не создавали лишних запросов.
Хуков нет.
Возвращаетnull.
void - ничего не возвращает.wp_prime_network_option_caches( $network_id, $options );
null используется ID текущей сети.После предварительной загрузки вызовы get_network_option() получают значения из кеша.
$network_id = 2; $options = [ 'my_plugin_api_url', 'my_plugin_api_key', 'my_plugin_enabled', ]; wp_prime_network_option_caches( $network_id, $options ); $api_url = get_network_option( $network_id, 'my_plugin_api_url' ); $api_key = get_network_option( $network_id, 'my_plugin_api_key' ); $enabled = get_network_option( $network_id, 'my_plugin_enabled' );
Global. wpdb. $wpdb WordPress database abstraction object.
| С версии 6.6.0 | Введена. |
function wp_prime_network_option_caches( $network_id, array $options ) {
global $wpdb;
if ( wp_installing() ) {
return;
}
if ( ! is_multisite() ) {
wp_prime_option_caches( $options );
return;
}
if ( $network_id && ! is_numeric( $network_id ) ) {
return;
}
$network_id = (int) $network_id;
// Fallback to the current network if a network ID is not specified.
if ( ! $network_id ) {
$network_id = get_current_network_id();
}
$cache_keys = array();
foreach ( $options as $option ) {
$cache_keys[ $option ] = "{$network_id}:{$option}";
}
$cache_group = 'site-options';
$cached_options = wp_cache_get_multiple( array_values( $cache_keys ), $cache_group );
$notoptions_key = "$network_id:notoptions";
$notoptions = wp_cache_get( $notoptions_key, $cache_group );
if ( ! is_array( $notoptions ) ) {
$notoptions = array();
}
// Filter options that are not in the cache.
$options_to_prime = array();
foreach ( $cache_keys as $option => $cache_key ) {
if (
( ! isset( $cached_options[ $cache_key ] ) || false === $cached_options[ $cache_key ] )
&& ! isset( $notoptions[ $option ] )
) {
$options_to_prime[] = $option;
}
}
// Bail early if there are no options to be loaded.
if ( empty( $options_to_prime ) ) {
return;
}
$query_args = $options_to_prime;
$query_args[] = $network_id;
$results = $wpdb->get_results(
$wpdb->prepare(
sprintf(
"SELECT meta_key, meta_value FROM $wpdb->sitemeta WHERE meta_key IN (%s) AND site_id = %s",
implode( ',', array_fill( 0, count( $options_to_prime ), '%s' ) ),
'%d'
),
$query_args
)
);
$data = array();
$options_found = array();
foreach ( $results as $result ) {
$key = $result->meta_key;
$cache_key = $cache_keys[ $key ];
$data[ $cache_key ] = maybe_unserialize( $result->meta_value );
$options_found[] = $key;
}
wp_cache_set_multiple( $data, $cache_group );
// If all options were found, no need to update `notoptions` cache.
if ( count( $options_found ) === count( $options_to_prime ) ) {
return;
}
$options_not_found = array_diff( $options_to_prime, $options_found );
// Add the options that were not found to the cache.
$update_notoptions = false;
foreach ( $options_not_found as $option_name ) {
if ( ! isset( $notoptions[ $option_name ] ) ) {
$notoptions[ $option_name ] = true;
$update_notoptions = true;
}
}
// Only update the cache if it was modified.
if ( $update_notoptions ) {
wp_cache_set( $notoptions_key, $notoptions, $cache_group );
}
}
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | Функция WordPress: wp_prime_site_option_caches() | 0 | 10 | 23-08-2026 |
| 2 | Функция WordPress: wp_verify_fast_hash() | 0 | 10 | 23-08-2026 |
| 3 | Функция WordPress: wp_register_block_metadata_collection() | 0 | 20 | 22-08-2026 |
| 4 | Функция WordPress: restore_current_locale() | 0 | 10 | 26-08-2026 |
| 5 | Функция WordPress: wp_add_crossorigin_attributes() | 0 | 19.09 | 20-08-2026 |
| 6 | Функция WordPress: is_sitemap() | 0 | 16.04 | 20-08-2026 |
| 7 | Функция WordPress: wp_set_script_module_translations() | 0 | 10 | 23-08-2026 |
| 8 | Функция WordPress: has_translation() | 0 | 10 | 23-08-2026 |
| 9 | Функция WordPress: wp_trash_comment() | 0 | 10 | 26-08-2026 |
| 10 | Функция WordPress: wp_register_block_types_from_metadata_collection() | 0 | 8.1 | 22-08-2026 |