Функция 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__in
network__in
domain
last_updated
path
registered
network_id
domain_length
path_length
id
Можно указать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, что делает её идеальным инструментом для получения информации в сети сайтов.