Skip to content
Snippets Groups Projects
Commit 7050c484 authored by Benjamin Adams's avatar Benjamin Adams
Browse files

Merge pull request #12 from hklemp/master

Fix Typo / Add Clear cache Button to Options Page
parents 364901af 054c48f6
No related branches found
No related tags found
No related merge requests found
......@@ -10,16 +10,13 @@ function getMicroTime($t)
}
$debug = false;
$debug = true;
$cache = false;
$ip_of_your_website = '127.0.0.1';
$secret_string = 'changeme';
if(!defined('WP_USE_THEMES')) {
define('WP_USE_THEMES', true);
}
// so we don't confuse the cloudflare server
if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
......@@ -56,8 +53,9 @@ try {
// This page is cached, lets display it
} 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) {
......@@ -70,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);
......@@ -81,9 +79,9 @@ try {
// When a page displays after an "HTTP 404: Not Found" error occurs, do not cache
// When the search was used, do not cache
if (!is_404() && !is_search()) {
if ((!is_404()) and (!is_search())) {
if ($unlimited) {
$redis->setex($redis_key, $html_of_page);
$redis->set($redis_key, $html_of_page);
}
else
{
......@@ -106,16 +104,16 @@ try {
require('./wp-blog-header.php');
}
if ($_SERVER['REMOTE_ADDR'] != $ip_of_your_website) {
// How long did it take to load the page? (CloudFlare may strip out comments)
$end = microtime();
$time = (@getMicroTime($end) - @getMicroTime($start));
echo "<!-- Cache system by Benjamin Adams. Page generated in " . round($time, 5) . " seconds. -->";
if ($debug) {
echo "<!-- wp-redis-cache-seconds = " . $seconds_cache_redis . " -->";
echo "<!-- wp-redis-cache-secret = " . $secret_string . "-->";
echo "<!-- wp-redis-cache-ip = " . $ip_of_your_website . "-->";
echo "<!-- wp-redis-cache-unlimited = " . $unlimited . "-->";
echo "<!-- wp-redis-cache-debug = " . $debug . "-->";
}
$end = microtime();
$time = (@getMicroTime($end) - @getMicroTime($start));
if ($debug) {
echo "<!-- Cache system by Benjamin Adams. Page generated in " . round($time, 5) . " seconds. -->";
echo "<!-- Site was cached = " . $cache . " -->";
echo "<!-- wp-redis-cache-seconds = " . $seconds_cache_redis . " -->";
echo "<!-- wp-redis-cache-secret = " . $secret_string . "-->";
echo "<!-- wp-redis-cache-ip = " . $ip_of_your_website . "-->";
echo "<!-- wp-redis-cache-unlimited = " . $unlimited . "-->";
echo "<!-- wp-redis-cache-debug = " . $debug . "-->";
}
<?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
}
?>
......@@ -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" />
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment