File Editor
Directories:
.. (Back)
Files:
admin-toolbar.php
admin.php
cache.php
cdn.php
clearing-specific-pages.php
cli.php
column.php
css-utilities.php
index.html
js-utilities.php
preload.php
single-preload.php
varnish.php
wp-polls.php
Create New File
Create
Edit File: single-preload.php
<?php class SinglePreloadWPFC{ public static $id = 0; public static $urls = array(); public static function init($id = false){ if($id){ self::set_id($id); }else if(isset($_GET["post"]) && $_GET["post"]){ self::set_id($_GET["post"]); } SinglePreloadWPFC::set_urls(); SinglePreloadWPFC::set_urls_with_terms(); } public static function add_meta_box(){ add_meta_box( 'auto_cache_custom_meta_box', // this is HTML id 'Auto Cache Settings', array("SinglePreloadWPFC", "auto_cache_custom_box_html"), // the callback function array('page', 'post', 'product'), 'side', 'high' ); } public static function auto_cache_custom_box_html(){ $yes_selected = ""; $no_selected = ""; if($data = get_option("WpFastestCache_autocache")){ if($data == "yes"){ $yes_selected = "selected"; }else if($data == "no"){ $no_selected = "selected"; } }else{ $no_selected = "selected"; } ?> <p> <label>Enable:</label> <select data-type='auto-cache-enable'> <option <?php echo $yes_selected; ?> value="yes">Yes</option> <option <?php echo $no_selected; ?> value="no">No</option> </select> <span class="spinner" style="float: none;display: inline-block;margin:0;"></span> </p> <p id="wpfc-single-preload-process" style="display: none;"> <label>Status: <span id="wpfc-single-preload-status-runnig">Running</span><span id="wpfc-single-preload-status-completed" style="display: none; color: #33CD32; font-weight: bold;">Completed</span></label><br> <label>Total: <span id="wpfc-single-preload-total-number"><?php echo count(self::$urls); ?></span></label><br> <label>Cached: <span id="wpfc-single-preload-cached-number">0</span></label><br> <label>Errors: <span id="wpfc-single-preload-error-number">0</span></label> </p> <p class="post-attributes-help-text">The cache will be created automatically after the contents are saved. <a href="https://www.wpfastestcache.com/features/automatic-cache/" target="_blank">More Info</a></p> <script type="text/javascript"> var Wpfc_Single_Preload_save_settings = function(){ var enable_form = jQuery("#auto_cache_custom_meta_box select[data-type='auto-cache-enable']"); if(enable_form.length == 1){ enable_form.change(function(){ enable_form.attr("disabled", true); jQuery("#auto_cache_custom_meta_box span.spinner").css({"visibility" : "visible"}); jQuery.ajax({ type: 'POST', url: ajaxurl, data: {"action": "wpfc_preload_single_save_settings", "is_enable": jQuery(this).val(), "nonce" : wpfc_nonce}, dataType: "json", cache: false, success: function(data){ enable_form.attr("disabled", false); jQuery("#auto_cache_custom_meta_box span.spinner").css({"visibility" : "hidden"}); console.log(data); }, error: function(error){ enable_form.attr("disabled", false); jQuery("#auto_cache_custom_meta_box span.spinner").css({"visibility" : "hidden"}); console.log(error.statusText); } }); }); } }; Wpfc_Single_Preload_save_settings(); </script> <?php // Add the HTML for the post meta } public static function save_settings(){ if(current_user_can('manage_options')){ $res = array("success" => true); if(get_option("WpFastestCache_autocache")){ update_option("WpFastestCache_autocache", sanitize_text_field($_POST["is_enable"])); }else{ add_option("WpFastestCache_autocache", sanitize_text_field($_POST["is_enable"]), null, "yes"); } wp_send_json($res); } wp_die("Must be admin"); } public static function set_id($id) { $id = (int)$id; if(get_post_status($id) === "publish"){ self::$id = $id; } } public static function create_cache_for_all_urls(){ if(preg_match("/include\s*\(\s*[\'\"]\/themes\//i", wp_debug_backtrace_summary())){ return array("success" => false, "error_message" => "You cannot call this function in any theme file"); } if(empty(self::$urls)){ return false; } $res_arr = array(); foreach (self::$urls as $url) { $res = $GLOBALS["wp_fastest_cache"]->wpfc_remote_get($url["url"], $url["user-agent"]); array_push($res_arr, array("url" => $url["url"], "success" => $res)); } return $res_arr; } public static function create_cache(){ $res = $GLOBALS["wp_fastest_cache"]->wpfc_remote_get($_GET["url"], $_GET["user_agent"]); if($res){ die("true"); } } public static function is_mobile_active(){ if(isset($GLOBALS["wp_fastest_cache_options"]->wpFastestCacheMobile) && isset($GLOBALS["wp_fastest_cache_options"]->wpFastestCacheMobileTheme)){ return true; }else{ return false; } } public static function set_term_urls($term_taxonomy_id){ $term = get_term_by("term_taxonomy_id", $term_taxonomy_id); if($term && !is_wp_error($term)){ $url = get_term_link($term->term_id, $term->taxonomy); array_push(static::$urls, array("url" => $url, "user-agent" => "WP Fastest Cache Preload Bot")); if(self::is_mobile_active()){ array_push(static::$urls, array("url" => $url, "user-agent" => "WP Fastest Cache Preload iPhone Mobile Bot")); } if($term->parent > 0){ $parent = get_term_by("id", $term->parent, $term->taxonomy); static::set_term_urls($parent->term_taxonomy_id); } } } public static function set_urls_with_terms(){ global $wpdb; $terms = $wpdb->get_results("SELECT * FROM `".$wpdb->prefix."term_relationships` WHERE `object_id`=".static::$id, ARRAY_A); foreach ($terms as $term_key => $term_val){ static::set_term_urls($term_val["term_taxonomy_id"]); } } public static function set_urls(){ if(static::$id){ $permalink = get_permalink(static::$id); array_push(static::$urls, array("url" => $permalink, "user-agent" => "WP Fastest Cache Preload Bot")); if(self::is_mobile_active()){ array_push(static::$urls, array("url" => $permalink, "user-agent" => "WP Fastest Cache Preload iPhone Mobile Bot")); } } } public static function put_inline_js(){ if($data = get_option("WpFastestCache_autocache")){ if($data == "no"){ return false; } }else{ return false; } ?> <script type="text/javascript"> var WpfcSinglePreload = { error_message: "", init: function(){ jQuery("#wpfc-single-preload-process").show("slow") }, change_status: function(){ var error_number = jQuery("#wpfc-single-preload-error-number").text(); var cached_number = jQuery("#wpfc-single-preload-cached-number").text(); var total_number = jQuery("#wpfc-single-preload-total-number").text(); error_number = parseInt(error_number); cached_number = parseInt(cached_number); total_number = parseInt(total_number); if(total_number == (cached_number + error_number)){ jQuery("#wpfc-single-preload-status-completed").show(); jQuery("#wpfc-single-preload-status-runnig").hide(); } }, increase_error: function(){ var number = jQuery("#wpfc-single-preload-error-number").text(); number = parseInt(number) + 1; jQuery("#wpfc-single-preload-error-number").text(number); WpfcSinglePreload.change_status(); }, increase_cached: function(){ var number = jQuery("#wpfc-single-preload-cached-number").text(); number = parseInt(number) + 1; jQuery("#wpfc-single-preload-cached-number").text(number); WpfcSinglePreload.change_status(); }, running_animation: function(){ let label = jQuery("#wpfc-single-preload-status-runnig"); let text = label.text(); let dot = 0; label.text(text + "."); self.interval = setInterval(function(){ text = label.text(); dot = text.match(/\./g); if(dot){ if(dot.length < 3){ label.text(text + "."); }else{ label.text(text.replace(/\.+$/, "")); } }else{ label.text(text + "."); } }, 300); }, create_cache: function(list){ var action = function(url, user_agent, list){ var self = this; jQuery("#wpfc-single-preload").show(); jQuery.ajax({ type: 'GET', url: ajaxurl, data: {"action": "wpfc_preload_single", "url": url, "user_agent": user_agent, "nonce" : wpfc_nonce}, dataType: "html", timeout: 10000, cache: false, success: function(data){ if(data == "true"){ WpfcSinglePreload.increase_cached(); }else{ self.error_message = data; WpfcSinglePreload.increase_error(); } if(typeof list == "object"){ WpfcSinglePreload.create_cache(list); } }, error: function(error){ self.error_message = error.statusText; WpfcSinglePreload.increase_error(); if(typeof list == "object"){ WpfcSinglePreload.create_cache(list); } } }); }; let number_to_used = 3; let sliced = list.slice(0, number_to_used); list.splice(0, number_to_used); jQuery.each(sliced, function( index, value ) { console.log( value["url"] ); if(index == (number_to_used-1)){ setTimeout(function(){ action(value["url"], value["user-agent"], list); }, 500); }else{ setTimeout(function(){ action(value["url"], value["user-agent"], false); }, 500); } }); } }; jQuery(document).ready(function(){ if(!jQuery("#auto_cache_custom_meta_box").is(":visible")){ return; } if(jQuery("#message").find("a").attr("href")){ WpfcSinglePreload.init(); WpfcSinglePreload.running_animation(); WpfcSinglePreload.create_cache(<?php echo json_encode(self::$urls); ?>); } }); </script> <?php } } ?>
Save Changes
Rename File
Rename