Генерировать уникальный код каждые шесть часов с помощью WordPress rest api

#php #wordpress #api #rest #refresh

#php #wordpress #API #rest #обновить

Вопрос:

Я хочу сгенерировать 12-значный уникальный код с помощью WordPress rest api, который обновляется каждые шесть часов. Я не нашел никакого кода или метода для моего требования.

Пример URL: ….domainname.com/wp-json/astra-sites/v1/get-last-unique-code

Json-код по ссылке выше:

 {"last_unique_code":"4qN6Ixy0amp;2!H"}
 

Этот код обновляется каждые шесть часов. Пожалуйста, дайте мне код или детали для генерации того же кода, который обновляется каждые шесть часов.

Я знаю, как выполнить пользовательский «register_rest_route» для создания пользовательского пути api, но я не нашел никакого способа автоматического обновления кода с помощью php и wordress.

Я использую приведенный ниже код

 class My_Rest_APIs {
    
    public function __construct() {
        add_action( 'rest_api_init', array( $this, 'create_api_posts_meta_field' ) );
    }

    public function create_api_posts_meta_field() {
        register_rest_route('my-custom-pages/v1', 'get-last-unique-code', [
            'methods' => 'GET',
            'callback' => array( $this, 'last_unique_code' )
        ]);
    }

    public function last_unique_code() {
        $pass = substr(str_shuffle("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstvwxyz@#$%amp;"), 0, 12);
        $checksum = array('last_unique_code' => $pass);
        return $checksum;
    }

}
 

Приведенный выше код генерирует уникальный код, но я не знаю, как сохранить его в базе данных, которая обновляется каждые шесть часов. Я попробовал метод update_option(), но он не работает.

Спасибо.

Комментарии:

1. как насчет задания cron, которое выполняется каждые 6 часов, генерирует код и сохраняет его в базе данных? Тогда PHP-код, который его отображает, просто получит последнее значение из базы данных.

2. Или создание «на лету» с начальным значением для генератора случайных чисел, которое остается постоянным для каждого шестичасового интервала.

3. Попробуйте использовать временный API WordPress, который поможет управлять временем. Вы можете устанавливать, получать, удалять переходный процесс в течение определенного интервала времени

4. Не могли бы вы дать мне пример кода для работы на лету или cron, чтобы я мог попробовать?

5. Почему, где именно ты застрял? Является ли проблема генерацией случайного кода? Или вставка в базу данных? или как настроить расписание cron? Или что-то еще? Не просто просите нас предоставить вам общий код (особенно если мы ничего не знаем о вашем существующем приложении или о том, как оно будет вписываться) — вместо этого разбейте задачу на составные части, изучите каждую часть и попытайтесь понять и реализовать ее. Если вы застряли, спросите нас о вашей конкретной проблеме. Мы не бесплатный сервис для написания кода или обучения, но мы поможем вам с конкретной, определяемой проблемой программирования

Ответ №1:

Выполняется ниже вашего обновленного фрагмента кода. При запуске SITE_URL/wp-json/my-custom-pages/v1/get-last-unique-code вы найдете значение вашей контрольной суммы, которое будет обновляться каждые шесть часов

 class My_Rest_APIs {
    
    public function __construct() {
        add_action( 'rest_api_init', array( $this, 'create_api_posts_meta_field' ) );
    }

    public function create_api_posts_meta_field() {
        register_rest_route('my-custom-pages/v1', 'get-last-unique-code', [
            'methods' => 'GET',
            'callback' => array( $this, 'last_unique_code' )
        ]);
    }

    public function last_unique_code() {
        
        // Get any existing copy of our transient data
        if ( false === ( $pass = get_transient( 'pass_key' ) ) ) {
            // It wasn't there, so regenerate the data and save the transient
            $pass = substr(str_shuffle("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstvwxyz@#$%amp;"), 0, 12);
            set_transient( 'pass_key', $pass, 6 * HOUR_IN_SECONDS );
        }

        $checksum = array('last_export_checksums' => $pass);
        return $checksum;
    }

}

new My_Rest_APIs();
 

Комментарии:

1. Миллион благодарностей, Икбал. Ваш код работает отлично. Я ценю, что вы нашли время ответить на мой запрос. Это помогло мне 🙂 🙂 🙂