set_transient( string $transient, mixed $value, int $expiration )
Set/update the value of a transient.
Description Description
You do not need to serialize values. If the value needs to be serialized, then it will be serialized before it is set.
Parameters Parameters
- $transient
-
(string) (Required) Transient name. Expected to not be SQL-escaped. Must be 172 characters or fewer in length.
- $value
-
(mixed) (Required) Transient value. Must be serializable if non-scalar. Expected to not be SQL-escaped.
- $expiration
-
(int) (Optional) Time until expiration in seconds. Default 0 (no expiration).
Return Return
(bool) False if value was not set and true if value was set.
Source Source
File: wp-includes/option.php
744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 | function set_transient( $transient , $value , $expiration = 0 ) { $expiration = (int) $expiration ; /** * Filters a specific transient before its value is set. * * The dynamic portion of the hook name, `$transient`, refers to the transient name. * * @since 3.0.0 * @since 4.2.0 The `$expiration` parameter was added. * @since 4.4.0 The `$transient` parameter was added. * * @param mixed $value New value of transient. * @param int $expiration Time until expiration in seconds. * @param string $transient Transient name. */ $value = apply_filters( "pre_set_transient_{$transient}" , $value , $expiration , $transient ); /** * Filters the expiration for a transient before its value is set. * * The dynamic portion of the hook name, `$transient`, refers to the transient name. * * @since 4.4.0 * * @param int $expiration Time until expiration in seconds. Use 0 for no expiration. * @param mixed $value New value of transient. * @param string $transient Transient name. */ $expiration = apply_filters( "expiration_of_transient_{$transient}" , $expiration , $value , $transient ); if ( wp_using_ext_object_cache() ) { $result = wp_cache_set( $transient , $value , 'transient' , $expiration ); } else { $transient_timeout = '_transient_timeout_' . $transient ; $transient_option = '_transient_' . $transient ; if ( false === get_option( $transient_option ) ) { $autoload = 'yes' ; if ( $expiration ) { $autoload = 'no' ; add_option( $transient_timeout , time() + $expiration , '' , 'no' ); } $result = add_option( $transient_option , $value , '' , $autoload ); } else { // If expiration is requested, but the transient has no timeout option, // delete, then re-create transient rather than update. $update = true; if ( $expiration ) { if ( false === get_option( $transient_timeout ) ) { delete_option( $transient_option ); add_option( $transient_timeout , time() + $expiration , '' , 'no' ); $result = add_option( $transient_option , $value , '' , 'no' ); $update = false; } else { update_option( $transient_timeout , time() + $expiration ); } } if ( $update ) { $result = update_option( $transient_option , $value ); } } } if ( $result ) { /** * Fires after the value for a specific transient has been set. * * The dynamic portion of the hook name, `$transient`, refers to the transient name. * * @since 3.0.0 * @since 3.6.0 The `$value` and `$expiration` parameters were added. * @since 4.4.0 The `$transient` parameter was added. * * @param mixed $value Transient value. * @param int $expiration Time until expiration in seconds. * @param string $transient The name of the transient. */ do_action( "set_transient_{$transient}" , $value , $expiration , $transient ); /** * Fires after the value for a transient has been set. * * @since 3.0.0 * @since 3.6.0 The `$value` and `$expiration` parameters were added. * * @param string $transient The name of the transient. * @param mixed $value Transient value. * @param int $expiration Time until expiration in seconds. */ do_action( 'setted_transient' , $transient , $value , $expiration ); } return $result ; } |
Expand full source code Collapse full source code View on Trac
Changelog Changelog
Version | Description |
---|---|
2.8.0 | Introduced. |
User Contributed Notes User Contributed Notes
You must log in before being able to contribute a note or feedback.
This example shows how to set a transient with the latest five blog posts. It expires after one day.
It uses time constants to set the expiration time.
// Set the arguments for the custom query
$args
=
array
(
'post_type'
=>
'post'
,
'posts_per_page'
=> 5,
'orderby'
=>
'date'
,
'order'
=>
'DESC'
);
$latest_post
=
new
WP_Query(
$args
);
// Save the results in a transient named latest_5_posts
set_transient(
'latest_5_posts'
,
$latest_post
, DAY_IN_SECONDS );
To know more about how to get posts and custom post type items read the documentation of WP_Query.
Saving the $special_query_results object for 12 hours
set_transient(
'special_query_results'
,
$special_query_results
, 12 * HOUR_IN_SECONDS );