function zt_display_leaders() {
$leaders = get_transient( 'zt-leaders' );
if ( false === $leaders ) {
$leaders = zt_get_leaders();
set_transient( 'zt-leaders', $leaders, 300 );
}
return $leaders;
}
function zt_display_leaders() {
$leaders = wp_cache_get( 'zt-leaders', 'zt-stats' );
if ( false === $leaders ) {
$leaders = zt_get_leaders();
wp_cache_set( 'zt-leaders', $leaders, 'zt-stats', 300 );
}
return $leaders;
}
Cache when the data is not cached
// functions.php
function zt_get_tweet() {
if ( false === ( $tweet = get_transient( 'zt-tweet' ) ) ) {
$tweet = zt_request_tweet(); // Talk to Twitter
set_transient( 'zt-tweet', $tweet, 300 );
}
return $tweet;
}
// sidebar.php
<h3>Latest Tweet:</h3>
<p><?php echo zt_get_tweet(); ?></p>
function zt_set_best_games( $post_id, $post ) {
if ( 'zt-game' != $post->post_type )
return false;
zt_determine_best_games();
}
add_action( 'publish_post', 'zt_set_best_games', 99, 2 );
function zt_determine_best_games() {
/* Get best reviewed games; set to $top_games */
set_transient( 'zt-top-games', $top_games );
return $top_games;
}
In 2 years
1 post per day: 730 runs
Common solution: 210,240 runs
function zt_schedule_tweet_retrieval() {
if ( ! wp_next_scheduled( 'zt_tweet_sched' ) )
wp_schedule_event( time(), 'hourly', 'zt_tweet_sched' );
add_action( 'zt_tweet_sched', 'zt_request_tweet' );
}
add_action( 'init', 'zt_schedule_tweet_retrieval' );
function zt_request_tweet() {
// Talk to Twitter
set_transient( 'zt-tweet', $tweet );
return $tweet;
}
function zt_get_tweet() {
if ( false === ( $tweet = get_transient( 'zt-tweet' ) ) ) {
$tweet = zt_request_tweet(); // Talk to Twitter
set_transient( 'zt-tweet', $tweet );
}
return $tweet;
}
Placeholder text
function zt_display_tweet() {
if ( $tweet = get_transient( 'zt-tweet' ) ) {
return $tweet;
else
return 'Latest Tweet Unavailable';
}
Regenerate data
function zt_display_tweet() {
if ( $tweet = get_transient( 'zt-tweet' ) ) {
return $tweet;
else
return zt_get_tweet(); // Talk to Twitter
}
Storing a "backup"
function zt_schedule_tweet_retrieval() {
if ( ! wp_next_scheduled( 'zt_tweet_sched' ) )
wp_schedule_event( time(), 'hourly', 'zt_tweet_sched' );
add_action( 'zt_tweet_sched', 'zt_generate_tweet' );
}
add_action( 'init', 'zt_schedule_tweet_retrieval' );
function zt_generate_tweet() {
$tweet = zt_request_tweet(); // Talk to Twitter
set_transient( 'zt-tweet', $tweet );
if ( ! get_option( 'zt-tweet' ) )
add_option( 'zt-tweet', $tweet, '', 'no' );
else
update_option( 'zt-tweet', $tweet );
return $tweet;
}
Using the "backup"
function zt_display_tweet() {
if ( $tweet = get_transient( 'zt-tweet' ) ) {
return $tweet;
} elseif ( $tweet = get_option( 'zt-tweet' ) {
set_transient( 'zt-tweet', $tweet );
return $tweet;
} else {
return zt_generate_tweet();
}
}
function zt_schedule_generate_beer() {
if ( ! wp_next_scheduled( 'zt_beer_sched' ) )
wp_schedule_event( time(), 'daily', 'zt_beer_sched' );
add_action( 'zt_beer_sched', 'zt_generate_beer_list' );
}
add_action( 'init', 'zt_schedule_generate_beer' );
function zt_generate_beer_list() {
// Query API and generate HTML
$beer_list = zt_get_beer_list();
set_transient( 'zt-beers', $beer_list );
delete_transient( 'zt-beer-sched-single' );
return $beer_list;
}
function zt_generate_beer_on_publish( $post_id, $post ) {
zt_generate_beer_list();
}
add_action( 'publish_post', 'zt_generate_beer_on_publish', 10, 2 );
// Same function from previous slide
function zt_generate_beer_list() {
// Query API and generate HTML
$beer_list = zt_get_beer_list();
set_transient( 'zt-beers', $beer_list );
delete_transient( 'zt-beer-sched-single' );
return $beer_list;
}
function zt_display_all_the_beers() {
if ( $beers = get_transient( 'zt-beers' ) ) {
return $beers;
} else {
if ( ! get_transient( 'zt-beer-sched-single' ) ) {
set_transient( 'zt-beer-sched-single', 'yes' );
wp_schedule_single_event( time(), 'zt_beer_sched' );
}
return 'Beer list is being generated.';
}
}
Andrew Nacin (@nacin)
Daniel Bachhuber (@danielbachhuber)
Helen Hou-Sandi (@helenhousandi)
Laura Milewski (@l
Steve Locker (@slocker3)