Как полностью эмулировать активную подписку WPML

This post is also available in: Українська English

Стандартный обход настройки помогает пройти начальный мастер, но онлайн-функции, такие как обновления, переводы и регистрация тем/плагинов, остаются неактивными. Для разработки или тестовых сред, где нужна полная функциональность без немедленного доступа к ключу, требуется более комплексный подход.

Это руководство показывает, как изменить проверку подписки в её источнике, заставляя WPML и его дополнения верить, что они зарегистрированы с активной и действительной лицензией.

Суть метода

Вместо простого обхода начальной проверки ключа, мы изменим класс, отвечающий за обработку данных подписки от API OTGS Installer. Заменив реальный парсер ответа нашим собственным, который возвращает жестко закодированный объект «активной подписки», мы можем обмануть все зависимые компоненты.

Пошаговая инструкция

Шаг 1 — Найдите нужный файл

Сначала перейдите в основную папку плагина WPML на вашем сервере через FTP или файловый менеджер. Найдите файл по адресу:

/wp-content/plugins/sitepress-multilingual-cms/vendor/otgs/installer/src/Api/Endpoint/Subscription.php

Этот файл содержит класс Subscription, который обрабатывает ответ API с информацией о лицензии.

Шаг 2 — Замените метод parseResponse

Откройте Subscription.php и найдите метод parseResponse. Его оригинальный код пытается получить и десериализовать реальный ответ от серверов WPML.

Замените весь блок функции:

public function parseResponse( $response ) {
        $body = wp_remote_retrieve_body( $response );
        if ( ! $body || ! is_serialized( $body ) || ! ( $apiResponse = @unserialize( $body ) ) ) {
            throw new InvalidResponseException();
        }

        if ( isset( $apiResponse->error ) ) {
            throw new InvalidSubscription( $apiResponse->error );
        }

        if ( isset( $apiResponse->subscription_data )
             && isset( $apiResponse->site_key )) {
            return $apiResponse;
        }

        throw  new InvalidSubscriptionResponseException();
    }

На эту модифицированную версию:

public function parseResponse( $response ) {

        $apiResponse = new \stdClass();

        // Создаём фейковый объект subscription_data с активным статусом
        $apiResponse->subscription_data = new \stdClass();
        $apiResponse->subscription_data->status = 1;              // 1 = SUBSCRIPTION_STATUS_ACTIVE
        $apiResponse->subscription_data->expires = '2027-01-01';  // Срок действия в далёком будущем
        $apiResponse->subscription_data->subscription_type = 1;   // Любой действительный ID типа
        $apiResponse->subscription_data->notes = '';

        // Создаём фейковый массив site_key
        $apiResponse->site_key = [
            'type' => 0,  // 0 = SITE_KEY_TYPE_PRODUCTION, 1 = DEVELOPMENT
        ];
       
        return $apiResponse;

        // Это оригинальное исключение никогда не будет достигнуто
        throw  new InvalidSubscriptionResponseException();
    }

Как это работает:

Шаг 3 — Завершите мастер настройки

  1. Сохраните файл Subscription.php после внесения изменений.
  2. Перейдите в Плагины → WPML в вашей админке WordPress, чтобы запустить или продолжить мастер настройки.
  3. Когда на третьем шаге появится запрос Site Key, введите любой фейковый ключ, например, 0123456789.
  4. Пройдите мастер до конца. WPML теперь примет ключ и завершит настройку.

Шаг 4 — Проверьте результат

После завершения мастера проверьте следующее:

⚠️ Критическое предупреждение

Это инвазивная модификация, которая полностью заменяет основную логику проверки лицензии. Используйте её только на сайтах разработки или тестирования, никогда на продакшене.

Восстановление оригинальной функциональности

Когда вы будете готовы использовать реальную лицензию:

  1. Замените модифицированный файл оригинальным Subscription.php (восстановите из резервной копии или переустановите плагин WPML).
  2. Введите ваш реальный Site Key в разделе Плагины → WPML → Аккаунт.
  3. Сайт затем правильно зарегистрируется на серверах WPML.

Итог

Этот метод обеспечивает более полную эмуляцию активной подписки, чем базовый обход настройки. Он полезен для демонстраций клиентам, тестирования сложных многоязычных конфигураций или разработки собственных рабочих процессов перевода без немедленной покупки лицензии. Тем не менее, это всё ещё временная техническая мера — если вы используете WPML на живом сайте, всегда поддерживайте разработчиков, покупая действительную лицензию.


⚠️ Дисклеймер

Информация в этой статье предоставляется исключительно в образовательных целях. Автор не несёт никакой ответственности за последствия применения описанных методов — любых изменений в файлах, базе данных или работе сайта.

Все действия вы выполняете на собственный риск. Перед внесением изменений обязательно создайте полную резервную копию сайта и базы данных.

Описанный обход является временным техническим решением для экстренных ситуаций или разработки. WPML — коммерческий продукт. Длительное использование без действующей лицензии нарушает условия использования программного обеспечения. Поддерживайте разработчиков — покупайте и регистрируйте лицензии официально.

#WordPress #WPML