I have a page that displays a random post every day. In order to change post every 24 hours I use
set_transient('totd_trans_post_id', $totd[0]->ID, (60*60*24));
What I’m wondering is this:
- Does the countdown (60*60*24) start as soon as I have inserted and saved the code?
- If yes: What happens if I let the code run for 23 hours, and then decide to “update” the code. Will the countdown restart?
- If no one visits the site for 48 hours, will the expiration still take place? Or does someone have to visit after 24 hours to “run” it?
2 Answers
-
The countdown would start as soon as the transient is created or updated.
-
Running
set_transient()
on an existing transient value will restart the clock. Per the Codex page onset_transient()
:If a transient exists, this function will update the transient’s expiration time.
-
According to the Transients API page, the expiration time is the maximum lifetime of a transient value. It may be deleted before the time is up, but it will never return its value after the time is up:
Transients may expire before the $expiration (Due to External Object Caches, or database upgrades) but will never return their value past $expiration.