This post is also available in:
Стандартный обход настройки помогает пройти начальный мастер, но онлайн-функции, такие как обновления, переводы и регистрация тем/плагинов, остаются неактивными. Для разработки или тестовых сред, где нужна полная функциональность без немедленного доступа к ключу, требуется более комплексный подход.
Это руководство показывает, как изменить проверку подписки в её источнике, заставляя 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();
}
Как это работает:
- Создаёт фейковый объект
stdClass, который имитирует структуру реального ответа API. - Устанавливает
subscription_data->status = 1, что является константой для активной подписки. - Предоставляет будущую дату окончания срока действия (
2027-01-01). - Включает фейковый массив
site_keyс типом «продакшн». - Возвращает этот фейковый объект вместо обработки реального (неудачного) ответа.
Шаг 3 — Завершите мастер настройки
- Сохраните файл
Subscription.phpпосле внесения изменений. - Перейдите в Плагины → WPML в вашей админке WordPress, чтобы запустить или продолжить мастер настройки.
- Когда на третьем шаге появится запрос Site Key, введите любой фейковый ключ, например,
0123456789. - Пройдите мастер до конца. WPML теперь примет ключ и завершит настройку.
Шаг 4 — Проверьте результат
После завершения мастера проверьте следующее:
- Перейдите в Плагины → Добавить новый → Коммерческие — ваш WPML и его дополнения должны отображаться как установленные и активные.
- Проверьте Панель инструментов → Обновления — WPML должен появиться в списке плагинов с доступными обновлениями.
- Попробуйте использовать расширенные функции, такие как управление переводами — они должны работать так, будто присутствует действительная лицензия.
⚠️ Критическое предупреждение
Это инвазивная модификация, которая полностью заменяет основную логику проверки лицензии. Используйте её только на сайтах разработки или тестирования, никогда на продакшене.
Восстановление оригинальной функциональности
Когда вы будете готовы использовать реальную лицензию:
- Замените модифицированный файл оригинальным
Subscription.php(восстановите из резервной копии или переустановите плагин WPML). - Введите ваш реальный Site Key в разделе Плагины → WPML → Аккаунт.
- Сайт затем правильно зарегистрируется на серверах WPML.
Итог
Этот метод обеспечивает более полную эмуляцию активной подписки, чем базовый обход настройки. Он полезен для демонстраций клиентам, тестирования сложных многоязычных конфигураций или разработки собственных рабочих процессов перевода без немедленной покупки лицензии. Тем не менее, это всё ещё временная техническая мера — если вы используете WPML на живом сайте, всегда поддерживайте разработчиков, покупая действительную лицензию.
⚠️ Дисклеймер
Информация в этой статье предоставляется исключительно в образовательных целях. Автор не несёт никакой ответственности за последствия применения описанных методов — любых изменений в файлах, базе данных или работе сайта.
Все действия вы выполняете на собственный риск. Перед внесением изменений обязательно создайте полную резервную копию сайта и базы данных.
Описанный обход является временным техническим решением для экстренных ситуаций или разработки. WPML — коммерческий продукт. Длительное использование без действующей лицензии нарушает условия использования программного обеспечения. Поддерживайте разработчиков — покупайте и регистрируйте лицензии официально.