Функция get_sites() в WordPress возвращает массив сайтов, подходящих под указанные параметры. В отличие от устаревшей wp_get_sites(), get_sites() возвращает объекты WP_Site, а не ассоциативный массив. Она работает на основе класса WP_Site_Query, предоставляя гибкость при получении сайтов в многосайтовой сети.
get_sites( string|array $args = array() ): array|int
Вот полный список аргументов для функции get_sites() в WordPress:
- site__in (массив): Массив ID сайтов, которые нужно получить. По умолчанию:
''. - site__not_in (массив): Массив ID сайтов, которые нужно исключить. По умолчанию:
''. - count (логический): Установите
true, если нужно получить количество найденных сайтов, а не объекты данных этих сайтов. По умолчанию:false. - date_query (массив): Фильтрация запроса по дате. Используется WP_Date_Query. По умолчанию:
null. - fields (строка): Поля, которые нужно вернуть в итоговых данных. Может быть:
'ids'— вернет только ID сайтов,''— вернет все данные сайта. По умолчанию:''. - ID (число): ID сайта, если нужно получить только этот сайт. По умолчанию:
''. - number (число): Максимальное количество сайтов, которые нужно получить. По умолчанию:
100. - offset (число): Смещение при получении сайтов. Используется для настройки
LIMITчасти запроса. Например, указав10, пропустятся первые 10 сайтов. По умолчанию:0. - no_found_rows (логический): Отключает подсчет найденных строк, убирает SQL оператор
SQL_CALC_FOUND_ROWS. По умолчанию:true. - orderby (строка|массив): Колонка для сортировки полученных сайтов. Варианты:
site__innetwork__indomainlast_updatedpathregisterednetwork_iddomain_lengthpath_lengthid
Можно указатьfalse,array()илиnoneдля отключения ORDER BY. По умолчанию:'id'.
- order (строка): Направление сортировки. Варианты:
ASC(по возрастанию) илиDESC(по убыванию). По умолчанию:ASC. - network_id (число): ID сети, сайты которой нужно получить. По умолчанию: (ID текущей сети).
- network__in (массив): Массив ID сетей, сайты которых нужно получить. По умолчанию:
''. - network__not_in (массив): Массив ID сетей, сайты которых нужно исключить. По умолчанию:
''. - domain (строка): Домен сайта, который нужно получить. По умолчанию:
''. - domain__in (массив): Массив доменов сайтов, которые нужно получить. По умолчанию:
''. - domain__not_in (массив): Массив доменов сайтов, которые нужно исключить. По умолчанию:
''. - path (строка): Путь, который должен содержать сайт. По умолчанию:
''. - path__in (массив): Массив путей, которые могут содержать сайты. По умолчанию:
''. - path__not_in (массив): Массив путей, которых не должно быть у сайтов. По умолчанию:
''. - public (число): Фильтрация по публичным сайтам. Значение
1— только публичные сайты,0— непубличные. По умолчанию:null. - archived (число): Фильтрация по архивированным сайтам. Может быть
1или0. По умолчанию:null. - mature (число): Фильтрация по зрелым (mature) сайтам. Может быть
1или0. По умолчанию:null. - spam (число): Фильтрация по сайтам со статусом «спам». Может быть
1или0. По умолчанию:null. - deleted (число): Фильтрация по удаленным сайтам. Может быть
1или0. По умолчанию:null. - search (строка): Поисковый запрос для поиска по сайтам. По умолчанию:
''. - search_columns (массив): Массив названий колонок для поиска, если установлен параметр
search. Варианты:'domain'или'path'. По умолчанию:array(). - lang_id (число) (с WP 4.8): Ограничивает результат по ID языка. По умолчанию:
null. - lang__in (массив) (с WP 4.8): Массив ID языков для выборки. По умолчанию:
''. - lang__not_in (массив) (с WP 4.8): Массив ID языков для исключения из результата. По умолчанию:
''. - update_site_cache (логический): Определяет, нужно ли обновлять кэш сайтов. По умолчанию:
true.
Эти параметры позволяют гибко настраивать выборку и фильтрацию сайтов для получения нужных данных.
Получение списка доменов всех сайтов сети
if ( function_exists('get_sites') ) {
$sites = get_sites();
foreach ( $sites as $site ) {
echo 'ID сайта: ' . $site->blog_id . '<br>';
echo 'Домен: ' . untrailingslashit('https://' . $site->domain . $site->path) . '<br>';
}
}
Получение определённых полей сайтов и обработка их
$args = array(
'fields' => 'ids',
'number' => 50,
'orderby' => 'registered',
'order' => 'DESC',
);
$sites_ids = get_sites($args);
foreach ($sites_ids as $site_id) {
echo 'ID сайта: ' . $site_id . '<br>';
}
Вывод сайтов с фильтрацией по дате регистрации
$args = array(
'date_query' => array(
array(
'after' => 'January 1st, 2022',
'before' => 'December 31st, 2022',
'inclusive' => true,
),
),
);
$filtered_sites = get_sites($args);
foreach ($filtered_sites as $site) {
echo 'ID сайта: ' . $site->blog_id . ', Дата регистрации: ' . $site->registered . '<br>';
}
Получение сайтов по ID
Чтобы получить только определенные сайты, можно воспользоваться параметром site__in, передав массив ID нужных сайтов:
$args = array(
'site__in' => array(1, 3, 5),
);
$sites = get_sites($args);
foreach ($sites as $site) {
echo 'ID: ' . $site->blog_id . ', Domain: ' . $site->domain . '<br>';
}
Исключение сайтов по ID
Если требуется исключить определенные сайты, воспользуйтесь параметром site__not_in, указав ID этих сайтов:
$args = array(
'site__not_in' => array(2, 4),
);
$sites = get_sites($args);
foreach ($sites as $site) {
echo 'ID: ' . $site->blog_id . ', Path: ' . $site->path . '<br>';
}
Подсчет сайтов в сети
Чтобы узнать количество сайтов, можно установить count в true, и функция вернет целое число, а не объекты:
$args = array(
'count' => true,
);
$site_count = get_sites($args);
echo 'Total sites: ' . $site_count;
Получение сайтов по дате
Для фильтрации по дате используется параметр date_query, который принимает массив условий:
$args = array(
'date_query' => array(
array(
'after' => '2022-01-01',
'before' => '2022-12-31',
'inclusive' => true,
),
),
);
$sites = get_sites($args);
foreach ($sites as $site) {
echo 'ID: ' . $site->blog_id . ', Registered: ' . $site->registered . '<br>';
}
Возврат только ID сайтов
Если нужно вернуть только ID, установите fields в ids:
$args = array(
'fields' => 'ids',
);
$site_ids = get_sites($args);
print_r($site_ids);
Лимит и смещение
Параметры number и offset позволяют ограничить количество возвращаемых сайтов и настроить смещение:
$args = array(
'number' => 10,
'offset' => 5,
);
$sites = get_sites($args);
foreach ($sites as $site) {
echo 'ID: ' . $site->blog_id . ', Domain: ' . $site->domain . '<br>';
}
Этот пример вернет 10 сайтов, начиная с шестого.
Замечания
- Замена
wp_get_sites()наget_sites(): обратите внимание, чтоget_sites()возвращает объектыWP_Site, что требует доступа к свойствам через->, а не через индексы массива. - Фильтрация больших сетей: если в сети более 10 000 сайтов, функция может вернуть пустой массив, если сработает
wp_is_large_network().
Заключение
Функция get_sites() предоставляет широкий функционал для управления выборкой сайтов в WordPress, что делает её идеальным инструментом для получения информации в сети сайтов.