Получение ID сайта из имени блога с функцией get_id_from_blogname()

Получение 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 и легко взаимодействовать с различными блогами в вашей сети.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *