I want to generate 12 digit unique code with wordpress rest api which refresh every six hours. I didn't find any code or method for my requirement.
Example URL: ....domainname.com/wp-json/astra-sites/v1/get-last-unique-code
Json code on above link:
{"last_unique_code":"4qN6Ixy0&2!H"}
This code refresh every six hours. Please give me code or details to generate same code which refresh every six hours.
I know how to do custom "register_rest_route" to create custom api path but I didn't find any method to refresh code automatically with php and wordress.
I am using below 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() {
$pass = substr(str_shuffle("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstvwxyz@#$%&"), 0, 12);
$checksum = array('last_unique_code' => $pass);
return $checksum;
}
}
Above code generates unique code but I don't know how to store it in database which refresh every six hours. I tried update_option() method but it doesn't work.
Thank you.
Executed below updated code snippet of yours.
When you run SITE_URL/wp-json/my-custom-pages/v1/get-last-unique-code
you will find the value of your checksum which will be updated every six hours
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@#$%&"), 0, 12);
set_transient( 'pass_key', $pass, 6 * HOUR_IN_SECONDS );
}
$checksum = array('last_export_checksums' => $pass);
return $checksum;
}
}
new My_Rest_APIs();