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?
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()
: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:
Just to add to @pat’s answer, There is no countdown, The time value represent the maximum amount of time for which the value being stored will be considered “fresh”, and after that time it will become “stale” and ignored. There is no active countdown and no active purging from the DB/memory. This might sound like semantics but it might become important if you generated many transients as they will not clear themself automatically from the DB.