Получение ID сайта из имени блога с помощью функции get_id_from_blogname()
Функция get_id_from_blogname()
была введена в WordPress начиная с версии 3.0.0. Она позволяет получить ID сайта по его имени (или slug). Slug — это часть URL, которая идентифицирует сайт.
Использование функции
Функция требует только один параметр — slug сайта, и возвращает его ID или null
, если сайт с таким именем не найден.
Формат вызова функции
get_id_from_blogname( $slug );
Параметры
- $slug (строка) (обязательный): имя сайта, по которому вы хотите найти его идентификатор.
Примеры использования
Пример 1: Получение ID сайта по имени
Допустим, вы хотите получить ID сайта, у которого slug — blog
. Если ID этого сайта равен 2, вы можете использовать следующий код:
// Сайт может иметь следующий домен или путь, в зависимости от настроек мультисайта:
// blog.site.com
// site.com/blog
get_id_from_blogname( 'blog' ); //> 2
Пример 2: Переключение между блогами по имени
Если вы хотите переключиться на другой блог с определённым slug, выполните следующий код:
$slug = 'другой-сайт';
$id = get_id_from_blogname( $slug );
switch_to_blog( $id );
// Здесь вы можете выполнять свои действия с контентом блога
restore_current_blog(); // Возвращаемся к текущему блогу
Как это работает
Функция get_id_from_blogname
ищет сайт по следующим параметрам:
- Если у вас установлен поддоменный мультисайт, она собирает домен из slug и текущего сетевого домена, например,
blog.site.com
. - Если у вас мультисайт без поддоменов, функция формирует путь для сайта.
Затем она использует функцию get_sites()
, чтобы найти ID сайта по указанным домену и пути. Если сайт не найден, функция возвращает null
.
Код функции
Для тех, кто хочет понимать, как работает сам код, вот его структура:
function get_id_from_blogname( $slug ) {
$current_network = get_network(); // Получаем текущую сеть
$slug = trim( $slug, '/' ); // Удаляем слэши в начале и конце slug
// Определяем домен и путь в зависимости от типа установки
if ( is_subdomain_install() ) {
$domain = $slug . '.' . preg_replace( '|^www.|', '', $current_network->domain );
$path = $current_network->path;
} else {
$domain = $current_network->domain;
$path = $current_network->path . $slug . '/';
}
// Получаем ID сайта по домену и пути
$site_ids = get_sites(
array(
'number' => 1,
'fields' => 'ids',
'domain' => $domain,
'path' => $path,
'update_site_meta_cache' => false,
)
);
if ( empty( $site_ids ) ) {
return null; // Если сайты не найдены, возвращаем null
}
return array_shift( $site_ids ); // Возвращаем первый найденный ID
}
Полезные функции
Есть несколько связанных функций, которые могут быть вам полезны при работе с многосайтовыми установками WordPress:
get_bloginfo()
- Получает информацию о сайте.get_blog_details()
- Получает детали конкретного блога.get_current_blog_id()
- Получает ID текущего блога.switch_to_blog()
- Переключает контекст на другой блог.restore_current_blog()
- Возвращает к предыдущему контексту блога.
Эти функции помогут вам эффективно управлять мультисайтами в WordPress и легко взаимодействовать с различными блогами в вашей сети.