Як повністю емулювати активну підписку 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