Функция wp_cache_add_global_groups()
позволяет указать одну или несколько групп кэша как глобальные. Это означает, что данные, сохраненные в таких группах, будут доступны всем сайтам сети (мультисайту), а не только отдельному сайту. Глобальные группы используют единый кэш без привязки к конкретному блогу или сайту.
wp_cache_add_global_groups( string|string[] $groups )
Параметры функции
$groups
(string|string[]) — обязательный параметр. Имя группы или массив с названиями групп, которые необходимо сделать глобальными.
Как работает функция
Когда данные добавляются в кэш с помощью wp_cache_add()
, можно указать их группу. Если группа обозначена как глобальная, то кэш будет общим для всех сайтов сети. Если группа не является глобальной, кэш будет уникальным для каждого сайта.
Пример 1: Добавление глобальной группы для кэша метаданных
Предположим, в системе есть сущность product
, у которой хранится метаданные в отдельной группе кэша. Чтобы эти метаданные были одинаковыми на всех сайтах сети, зададим глобальную группу product_meta
.
// Делаем группу product_meta глобальной для всей сети сайтов
wp_cache_add_global_groups( 'product_meta' );
// Теперь добавляем данные в кэш для этой группы
wp_cache_add( '123', [ 'color' => 'blue', 'size' => 'large' ], 'product_meta' );
В этом примере данные в группе product_meta
будут доступны всем сайтам мультисайта. То есть, независимо от того, на каком сайте мы вызовем wp_cache_get()
для этих данных, будет возвращено одно и то же значение.
Пример 2: Использование нескольких глобальных групп
Если нужно, чтобы несколько групп были глобальными, например, global_settings
и network_cache
, добавим их с помощью массива.
// Делаем группы global_settings и network_cache глобальными для всей сети
wp_cache_add_global_groups( ['global_settings', 'network_cache'] );
// Добавляем кэш для глобальной группы global_settings
wp_cache_add( 'site_theme', 'dark_mode', 'global_settings' );
// Добавляем кэш для глобальной группы network_cache
wp_cache_add( 'post_count', 1500, 'network_cache' );
Теперь информация в global_settings
и network_cache
будет единой для всей сети сайтов, что удобно для данных, общих для всех сайтов.
Пример 3: Создание глобального кэша для новой таблицы
Допустим, у нас есть таблица test_scores
, которая хранит данные о результатах тестов. Эти данные должны быть едиными для всех сайтов сети. Создадим глобальную группу для кэширования этой информации.
// Делаем группу test_scores глобальной
wp_cache_add_global_groups( 'test_scores' );
// Сохраняем результаты в кэше для всей сети
wp_cache_add( 'score_456', [ 'math' => 85, 'science' => 90 ], 'test_scores' );
Теперь информация о результатах тестов для каждого теста будет сохраняться в кэше на уровне всей сети и доступна любому сайту.
Заключение
Функция wp_cache_add_global_groups()
позволяет эффективно организовать кэширование данных, которые должны быть доступны на всех сайтах мультисайта. Она помогает уменьшить избыточные запросы, сохраняя единую версию данных для всех сайтов, и особенно полезна при работе с информацией, общей для всей сети.