Dynamic Content in cached pages
-
Trying to implement the technique discussed here,
http://z9.io/2013/10/21/shiny-new-dynamic-content-wp-super-cache/
into a site that is using the Genesis framework. I was wondering if anybody has made this technique work at all, but more so interested if anybody has made it work using Genesis.
Here is my code for anybody interested:
First, the page template file (test-age.php):
<?php /* * Template Name: Test Template */ remove_action( 'genesis_loop', 'genesis_do_loop' ); remove_action( 'genesis_entry_content', 'genesis_do_post_content' ); add_action( 'genesis_loop', 'support_loop' ); // Content Area define( 'DYNAMIC_OUTPUT_BUFFER_TAG', 'moonshine' ); // Change this to a secret placeholder tag if ( DYNAMIC_OUTPUT_BUFFER_TAG != '' ) { function dynamic_output_buffer_test( &$cachedata = 0 ) { if ( defined( 'DYNAMIC_OB_TEXT' ) ) return str_replace( DYNAMIC_OUTPUT_BUFFER_TAG, DYNAMIC_OB_TEXT, $cachedata ); ob_start(); // call the sidebar function, do something dynamic include( 'test-content.php' ); $text = ob_get_contents(); ob_end_clean(); if ( $cachedata === 0 ) { // called directly from the theme so store the output define( 'DYNAMIC_OB_TEXT', $text ); } else // called via the wpsc_cachedata filter. We only get here in cached pages in wp-cache-phase1.php return str_replace( DYNAMIC_OUTPUT_BUFFER_TAG, $text, $cachedata ); } add_cacheaction( 'wpsc_cachedata', 'dynamic_output_buffer_test' ); function dynamic_output_buffer_init() { add_action( 'wp_footer', 'dynamic_output_buffer_test' ); } add_cacheaction( 'add_cacheaction', 'dynamic_output_buffer_init' ); function dynamic_output_buffer_test_safety( $safety ) { if ( defined( 'DYNAMIC_OB_TEXT' ) ) // this is set when you call dynamic_output_buffer_test() from the theme return 1; // ready to replace tag with dynamic content. else return 0; // tag cannot be replaced. } add_cacheaction( 'wpsc_cachedata_safety', 'dynamic_output_buffer_test_safety' ); } function support_loop() { echo "\n"; // make source views more pleasant for debugging ?> <div class="test-page"> <?php if ( function_exists( 'dynamic_output_buffer_test' ) ) dynamic_output_buffer_test(); ?>moonshine<?php ?> </div> <?php echo "\n"; // make source views more pleasant for debugging } genesis(); ?>
And the file that contains the would produce the dynamic content (test-content.php):
<?php echo "The test was successful!!!!";
Any thoughts or insights would be appreciated.
- The topic ‘Dynamic Content in cached pages’ is closed to new replies.