diff --git a/index-wp-redis.php b/index-wp-redis.php index cdc89cc294c593eb2d41b91e35d1a5f103820974..bd11f107da95774cedaf43d543dc21142e5e5c7f 100644 --- a/index-wp-redis.php +++ b/index-wp-redis.php @@ -55,7 +55,7 @@ try { } else if ($redis->exists($redis_key)) { $cache = true; $html_of_page = $redis->get($redis_key); - echo $html_of_page; + echo $html_of_page; // If the cache does not exist lets display the user the normal page without cache, and then fetch a new cache page } else if ($_SERVER['REMOTE_ADDR'] != $ip_of_your_website && strstr($current_url, 'preview=true') == false) { @@ -68,7 +68,7 @@ try { require('./wp-blog-header.php'); $html_of_page = ob_get_contents(); ob_end_clean(); - echo $html_of_page; + echo $html_of_page; $unlimited = get_option('wp-redis-cache-debug',false); $seconds_cache_redis = get_option('wp-redis-cache-seconds',43200); diff --git a/wp-redis-cache/cache.php b/wp-redis-cache/cache.php index e4dd76e4fc1e1db44e1f79997e47ea545fb14141..e47efeb8a50c588459055d6695d186d8b3bc8305 100644 --- a/wp-redis-cache/cache.php +++ b/wp-redis-cache/cache.php @@ -1,25 +1,73 @@ <?php add_action('transition_post_status', 'refresh_wp_redis_cache',10,3); - +add_action('wp_ajax_clear_wp_redis_cache', 'clear_wp_redis_cache'); +add_action( 'admin_footer', 'clear_wp_redis_cache_javascript' ); //clears the cache after you update a post function refresh_wp_redis_cache( $new, $old, $post ) { -if($new == "publish") -{ -$permalink = get_permalink( $post->ID ); + if($new == "publish") + { + $permalink = get_permalink( $post->ID ); + + // aaronstpierre: this needs to be include_once so as not to cauase a redeclaration error + include_once("predis5.2.php"); //we need this to use Redis inside of PHP + $redis = new Predis_Client(); -// aaronstpierre: this needs to be include_once so as not to cauase a redeclaration error -include_once("predis5.2.php"); //we need this to use Redis inside of PHP -$redis = new Predis_Client(); + $redis_key = md5($permalink); + $redis->del($redis_key); + + //refresh the front page + $frontPage = get_home_url() . "/"; + $redis_key = md5($frontPage); + $redis->del($redis_key); + } +} -$redis_key = md5($permalink); -$redis->del($redis_key); +// clears the whole cache +function clear_wp_redis_cache() +{ + include_once("predis5.2.php"); //we need this to use Redis inside of PHP + $args = array( 'post_type' => 'any', 'posts_per_page' => -1); + $wp_query = new WP_Query( $args); // to get all Posts + $redis = new Predis_Client(); + // Loop all posts and clear the cache + $i = 0; + while ( $wp_query->have_posts() ) : $wp_query->the_post(); + $permalink = get_permalink(); -//refresh the front page -$frontPage = get_home_url() . "/"; -$redis_key = md5($frontPage); -$redis->del($redis_key); + $redis_key = md5($permalink); + if (($redis->exists($redis_key)) == true ) { + $redis->del($redis_key); + $i++; + } + + + endwhile; + + echo $i++." of " . $wp_query -> found_posts . " posts was cleared in cache"; + die(); } + +function clear_wp_redis_cache_javascript() { +?> +<script type="text/javascript" > +jQuery(document).ready(function($) { + + jQuery('#WPRedisClearCache').click(function(){ + var data = { + action: 'clear_wp_redis_cache', + }; + + // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php + $.post(ajaxurl, data, function(response) { + alert(response); + }); + }); +}); +</script> +<?php } +?> + diff --git a/wp-redis-cache/options.php b/wp-redis-cache/options.php index 0923754ff6e2f17ebe2e2ebb8fe053e9d01146e2..4a110809a94d3051a389b94488cb0a6a81389e7f 100644 --- a/wp-redis-cache/options.php +++ b/wp-redis-cache/options.php @@ -143,7 +143,7 @@ function edit_redis_options() { <input type="checkbox" name="wp-redis-cache-unlimited" size="45" value="true" <?php checked('true', get_option('wp-redis-cache-unlimited')); ?>/></p> <p><input type="submit" name="Submit" value="Update Options" /></p> - + <p><input type="button" id="WPRedisClearCache" name="WPRedisClearCache" value="Clear Cache"></p> <input type="hidden" name="action" value="update" /> <input type="hidden" name="page_options" value="wp-redis-cache-seconds,wp-redis-cache-unlimited" />