Retrieves the value of a transient.
Description
If the transient does not exist, does not have a value, or has expired, then the return value will be false.
Parameters
$transient
stringrequired- Transient name. Expected to not be SQL-escaped.
Source
function get_transient( $transient ) {
/**
* Filters the value of an existing transient before it is retrieved.
*
* The dynamic portion of the hook name, `$transient`, refers to the transient name.
*
* Returning a value other than false from the filter will short-circuit retrieval
* and return that value instead.
*
* @since 2.8.0
* @since 4.4.0 The `$transient` parameter was added
*
* @param mixed $pre_transient The default value to return if the transient does not exist.
* Any value other than false will short-circuit the retrieval
* of the transient, and return that value.
* @param string $transient Transient name.
*/
$pre = apply_filters( "pre_transient_{$transient}", false, $transient );
if ( false !== $pre ) {
return $pre;
}
if ( wp_using_ext_object_cache() || wp_installing() ) {
$value = wp_cache_get( $transient, 'transient' );
} else {
$transient_option = '_transient_' . $transient;
if ( ! wp_installing() ) {
// If option is not in alloptions, it is not autoloaded and thus has a timeout.
$alloptions = wp_load_alloptions();
if ( ! isset( $alloptions[ $transient_option ] ) ) {
$transient_timeout = '_transient_timeout_' . $transient;
wp_prime_option_caches( array( $transient_option, $transient_timeout ) );
$timeout = get_option( $transient_timeout );
if ( false !== $timeout && $timeout < time() ) {
delete_option( $transient_option );
delete_option( $transient_timeout );
$value = false;
}
}
}
if ( ! isset( $value ) ) {
$value = get_option( $transient_option );
}
}
/**
* Filters an existing transient's value.
*
* The dynamic portion of the hook name, `$transient`, refers to the transient name.
*
* @since 2.8.0
* @since 4.4.0 The `$transient` parameter was added
*
* @param mixed $value Value of transient.
* @param string $transient Transient name.
*/
return apply_filters( "transient_{$transient}", $value, $transient );
}
Hooks
- apply_filters( “pre_transient_{$transient}”,
mixed $pre_transient ,string $transient ) Filters the value of an existing transient before it is retrieved.
- apply_filters( “transient_{$transient}”,
mixed $value ,string $transient ) Filters an existing transient’s value.
Changelog
Version | Description |
---|---|
2.8.0 | Introduced. |
Example of using
get_transient
,set_transient
andWP_Query
Useful to know: If the transient exists but has expired, the return value will not just be false. The expired transient will be deleted at the same time.
WordPress does not delete expired transients on its own, but using get_transient() on an expired one will do so. Non-expired transients, or transients without expiration will only be deleted with delete_transient() .
Add
WP_DEBUG
in the conditional statement if you always want live data during development stageBe careful:
get_transient()
might not return the same result whether an object cache is enabled or not.Here
$obj_from_transient->obj->test = 'sub value modified'
not'sub value'
if an object cache is enabled (wp_get_cache
is used in that case).