Skip to content

Instantly share code, notes, and snippets.

@blogjunkie
Last active August 30, 2015 03:10
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save blogjunkie/39368f93a8d92cc6d060 to your computer and use it in GitHub Desktop.
Save blogjunkie/39368f93a8d92cc6d060 to your computer and use it in GitHub Desktop.
Cache Metro Pro homepage with Transients API
<?php
//* Do NOT include the opening php tag shown above. Only modified code shown below.
function metro_homepage_widgets() {
// get the transient
$metro_homepage_content = get_transient( 'metro_homepage_content' );
// check if homepage content exists
if ( false === $metro_homepage_content ) :
// homepage content doesn't exist, so generate the content now
// start the output buffer
ob_start();
// output the widgets
genesis_widget_area( 'home-top', array(
'before' => '<div class="home-top widget-area">',
'after' => '</div>',
) );
if ( is_active_sidebar( 'home-middle-left' ) || is_active_sidebar( 'home-middle-right' ) ) {
echo '<div class="home-middle">';
genesis_widget_area( 'home-middle-left', array(
'before' => '<div class="home-middle-left widget-area">',
'after' => '</div>',
) );
genesis_widget_area( 'home-middle-right', array(
'before' => '<div class="home-middle-right widget-area">',
'after' => '</div>',
) );
echo '</div>';
}
genesis_widget_area( 'home-bottom', array(
'before' => '<div class="home-bottom widget-area">',
'after' => '</div>',
) );
// save homepage content as $metro_homepage_content
$metro_homepage_content = ob_get_contents();
// empty buffer and stop output buffering
ob_end_clean();
// save transient to last for 12 hours
set_transient('metro_homepage_content', $metro_homepage_content, 12 * HOUR_IN_SECONDS );
endif;
// output the new created fragment if transient does not exist.
echo $metro_homepage_content;
}
genesis();
<?php
//* Do NOT include the opening php tag shown above. Only modified code shown below.
//* Delete metro_homepage_content transient
function metro_delete_homepage_transient() {
delete_transient( 'metro_homepage_content' );
}
add_action( 'save_post', 'metro_delete_homepage_transient' ); // delete transient when saving posts
add_action( 'deleted_post', 'metro_delete_homepage_transient' ); // delete transient when deleting posts
add_action( 'update_option', 'metro_delete_homepage_transient' ); // delete transient when any WP settings are saved
// add_action( 'update_option_sidebars_widgets', 'metro_delete_homepage_transient' ); // when widgets are repositioned
// add_action( 'update_option_widget_featured-post', 'metro_delete_homepage_transient' ); // when Featured Post widget settings saved
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment