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 — комерційний продукт. Тривале використання без дійсної ліцензії порушує умови використання програмного забезпечення. Підтримуйте розробників — купуйте та реєструйте ліцензії офіційно.