Using WordPress ‘expiration_of_site_transient_{$transient}’ PHP filter

The expiration_of_site_transient_{$transient} WordPress PHP filter lets you modify the expiration time for a site transient before its value is set. The dynamic portion of the hook name, $transient, refers to the transient name.


add_filter('expiration_of_site_transient_'.$transient, 'your_custom_function', 10, 3);

function your_custom_function($expiration, $value, $transient) {
    // Your custom code here

    return $expiration;


  • $expiration (int): Time until expiration in seconds. Use 0 for no expiration.
  • $value (mixed): New value of the site transient.
  • $transient (string): Transient name.

More information

See WordPress Developer Resources: expiration_of_site_transient_{$transient}


Extend the expiration of a specific transient

This example extends the expiration time for the transient named “my_transient” to 1 day.

add_filter('expiration_of_site_transient_my_transient', 'extend_my_transient_expiration', 10, 3);

function extend_my_transient_expiration($expiration, $value, $transient) {
    return DAY_IN_SECONDS;

Set a custom expiration for all transients

This example sets a custom expiration of 2 hours for all site transients.

add_filter('expiration_of_site_transient', 'set_custom_expiration_for_all_transients', 10, 3);

function set_custom_expiration_for_all_transients($expiration, $value, $transient) {
    return 2 * HOUR_IN_SECONDS;

Set no expiration for specific transient

This example sets no expiration for the transient named “no_expire_transient”.

add_filter('expiration_of_site_transient_no_expire_transient', 'set_no_expiration', 10, 3);

function set_no_expiration($expiration, $value, $transient) {
    return 0;

Extend expiration based on transient value

This example extends the expiration time for the transient named “value_based_expiration” based on its value. If the value is more than 100, the expiration is set to 12 hours; otherwise, it’s set to 6 hours.

add_filter('expiration_of_site_transient_value_based_expiration', 'extend_expiration_based_on_value', 10, 3);

function extend_expiration_based_on_value($expiration, $value, $transient) {
    if ($value > 100) {
        return 12 * HOUR_IN_SECONDS;
    } else {
        return 6 * HOUR_IN_SECONDS;

Shorten the expiration time for a specific transient when a condition is met

This example shortens the expiration time for the transient named “conditional_transient” to 1 hour if the value is less than 50.

add_filter('expiration_of_site_transient_conditional_transient', 'shorten_expiration_when_condition_met', 10, 3);

function shorten_expiration_when_condition_met($expiration, $value, $transient) {
    if ($value < 50) {
        return HOUR_IN_SECONDS;
    return $expiration;