#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. Миллион благодарностей, Икбал. Ваш код работает отлично. Я ценю, что вы нашли время ответить на мой запрос. Это помогло мне 🙂 🙂 🙂