PluginProbe ʕ •ᴥ•ʔ
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization / 1.16.5
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization v1.16.5
1.19.8 1.19.7 1.19.6 1.19.5 trunk 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.12.0 1.13.0 1.14.0 1.15.0 1.15.1 1.15.2 1.15.3 1.16.0 1.16.1 1.16.2 1.16.3 1.16.4 1.16.5 1.16.6 1.16.7 1.16.8 1.17.0 1.17.6 1.17.7 1.17.8 1.17.9 1.18.0 1.18.1 1.18.2 1.18.3 1.18.4 1.18.5 1.18.6 1.18.7 1.18.8 1.18.9 1.19.0 1.19.1 1.19.2 1.19.3 1.19.4 1.3.19 1.3.20 1.4.0 1.4.1 1.5.0 1.5.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.16 1.5.17 1.5.18 1.5.19 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.7.0 1.7.1 1.8.0 1.8.1 1.8.3 1.9.0 1.9.1 1.9.2
nitropack / main.php
nitropack Last commit date
classes 1 year ago languages 2 years ago nitropack-sdk 1 year ago view 1 year ago advanced-cache.php 2 years ago batcache-compat.php 4 years ago constants.php 1 year ago diagnostics.php 2 years ago functions.php 1 year ago helpers.php 3 years ago main.php 1 year ago readme.txt 1 year ago uninstall.php 2 years ago wp-cli.php 2 years ago
main.php
276 lines
1 <?php
2 /*
3 Plugin Name: NitroPack
4 Plugin URI: https://nitropack.io/platform/wordpress
5 Description: Automatic optimization for site speed and Core Web Vitals. Use 35+ features, including Caching, image optimization, critical CSS, and Cloudflare CDN.
6 Version: 1.16.5
7 Author: NitroPack Inc.
8 Author URI: https://nitropack.io/
9 License: GPL2
10 License URI: https://www.gnu.org/licenses/gpl-2.0.html
11 Text Domain: nitropack
12 Domain Path: /languages
13 */
14
15 defined('ABSPATH') or die('No script kiddies please!');
16
17 $np_basePath = dirname(__FILE__) . '/';
18 require_once $np_basePath . 'functions.php';
19 require_once $np_basePath . 'helpers.php';
20 require_once $np_basePath . 'diagnostics.php';
21
22 if (nitropack_is_wp_cli()) {
23 require_once $np_basePath . 'wp-cli.php';
24 }
25
26 if (\NitroPack\Integration\Plugin\Ezoic::isActive()) {
27 if (!nitropack_is_optimizer_request()) {
28 // We need to serve the cached content after Ezoic's output buffering has started at plugins_loaded,0
29 add_action('plugins_loaded', function () {
30 add_filter('home_url', ['\NitroPack\Integration\Plugin\Ezoic', 'getHomeUrl']);
31 nitropack_handle_request("plugin-ezoic");
32 remove_filter('home_url', ['\NitroPack\Integration\Plugin\Ezoic', 'getHomeUrl']);
33 }, 1);
34 } else {
35 add_action('plugins_loaded', ['\NitroPack\Integration\Plugin\Ezoic', 'disable'], 1);
36 }
37 } else {
38 nitropack_handle_request("plugin");
39 }
40
41 add_filter('nitro_script_output', function ($script) {
42 $isPrefetch = isset($_SERVER['HTTP_SEC_FETCH_DEST'])
43 && $_SERVER['HTTP_SEC_FETCH_DEST'] === 'empty'
44 && (
45 (isset($_SERVER['HTTP_SEC_PURPOSE']) && $_SERVER['HTTP_SEC_PURPOSE'] === 'prefetch')
46 ||
47 (isset($_SERVER['HTTP_PURPOSE']) && $_SERVER['HTTP_PURPOSE'] === 'prefetch')
48 );
49
50 $canPrintScripts = !nitropack_is_amp_page() // Make sure we don't accidentally print a non-amp compatible script to an amp page
51 && (!isset($_SERVER['HTTP_SEC_FETCH_DEST']) || $_SERVER['HTTP_SEC_FETCH_DEST'] === 'document' || $isPrefetch)
52 && (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest');
53
54 if ($canPrintScripts) {
55 return $script;
56 } else {
57 return "";
58 }
59 });
60 add_action('pre_post_update', 'nitropack_log_post_pre_update', 10, 3);
61 add_filter('woocommerce_rest_pre_insert_product_object', 'nitropack_log_product_pre_api_update', 10, 3);
62 // add_action( 'clean_post_cache', 'nitropack_post_updated', 10, 3);
63 // add_action( 'post_updated', 'nitropack_post_updated', 10, 3);
64 // add_action( 'save_post', 'nitropack_post_updated', 10, 3);
65 // add_action( 'edited_term_taxonomy', 'nitropack_post_updated', 10, 3);
66 // add_action( 'woocommerce_update_product', 'nitropack_postmeta_updated', 10, 4);
67 add_action('updated_postmeta', 'nitropack_postmeta_updated', 10, 4);
68 add_action('set_object_terms', 'nitropack_sot', 10, 6);
69 add_action('transition_post_status', 'nitropack_handle_post_transition', 10, 3);
70 add_action('publish_post', 'nitropack_handle_first_publish', 10, 1);
71 add_action('transition_comment_status', 'nitropack_handle_comment_transition', 10, 3);
72 add_action('comment_post', 'nitropack_handle_comment_post', 10, 2);
73 add_action('woocommerce_reduce_order_stock', 'custom_reduce_stock_after_order_placed');
74 add_action('switch_theme', 'nitropack_theme_handler');
75 register_shutdown_function('nitropack_execute_purges');
76 register_shutdown_function('nitropack_execute_invalidations');
77 register_shutdown_function('nitropack_execute_warmups');
78
79 add_action('woocommerce_product_object_updated_props', 'nitropack_handle_product_updates', 0, 2);
80 add_action('woocommerce_rest_insert_product', function ($post, $request, $creating) {
81 if (!$creating) {
82 nitropack_detect_changes_and_clean_post_cache($post);
83 }
84 }, 10, 3);
85 add_action('woocommerce_rest_insert_product_object', function ($product, $request, $creating) {
86 if (!$creating) {
87
88 $post = get_post($product->get_id());
89 nitropack_detect_changes_and_clean_post_cache($post);
90 }
91 }, 10, 3);
92
93 add_action('wcml_set_client_currency', function ($currency) {
94 setcookie('np_wc_currency', $currency, time() + (86400 * 7), "/");
95 });
96
97 if (nitropack_has_advanced_cache()) {
98 // Handle automated updates
99 if (!defined("NITROPACK_ADVANCED_CACHE_VERSION") || NITROPACK_VERSION != NITROPACK_ADVANCED_CACHE_VERSION) {
100 add_action('plugins_loaded', 'nitropack_install_advanced_cache');
101 }
102 }
103
104 add_action('wp_footer', 'nitropack_print_heartbeat_script');
105 add_action('admin_footer', 'nitropack_print_heartbeat_script');
106 add_action('get_footer', 'nitropack_print_heartbeat_script');
107
108 add_action('wp_footer', 'nitropack_print_cookie_handler_script');
109 add_action('admin_footer', 'nitropack_print_cookie_handler_script');
110 add_action('admin_footer', function () {
111 nitropack_setcookie("nitroCachedPage", 0, time() - 86400);
112 }); // Clear the nitroCachePage cookie
113 add_action('get_footer', 'nitropack_print_cookie_handler_script');
114
115 if (is_admin()) {
116 add_action('admin_menu', 'nitropack_menu');
117 add_action('admin_init', 'register_nitropack_settings');
118 add_action('admin_notices', 'nitropack_admin_notices');
119 add_action('network_admin_notices', 'nitropack_admin_notices');
120 add_action('wp_ajax_nitropack_purge_cache', 'nitropack_purge_cache');
121 add_action('wp_ajax_nitropack_invalidate_cache', 'nitropack_invalidate_cache');
122 add_action('wp_ajax_nitropack_clear_residual_cache', 'nitropack_clear_residual_cache');
123 add_action('wp_ajax_nitropack_verify_connect', 'nitropack_verify_connect_ajax');
124 add_action('wp_ajax_nitropack_disconnect', 'nitropack_disconnect');
125 add_action('wp_ajax_nitropack_test_compression_ajax', 'nitropack_test_compression_ajax');
126 add_action('wp_ajax_nitropack_set_compression_ajax', 'nitropack_set_compression_ajax');
127 add_action('wp_ajax_nitropack_set_stock_reduce_status', 'nitropack_set_stock_reduce_status');
128 add_action('wp_ajax_nitropack_set_auto_cache_purge_ajax', 'nitropack_set_auto_cache_purge_ajax');
129 add_action('wp_ajax_nitropack_set_cart_cache_ajax', 'nitropack_set_cart_cache_ajax');
130 add_action('wp_ajax_nitropack_set_bb_cache_purge_sync_ajax', 'nitropack_set_bb_cache_purge_sync_ajax');
131 add_action('wp_ajax_nitropack_set_legacy_purge_ajax', 'nitropack_set_legacy_purge_ajax');
132 add_action('wp_ajax_nitropack_set_cacheable_post_types', 'nitropack_set_cacheable_post_types');
133 add_action('wp_ajax_nitropack_enable_warmup', 'nitropack_enable_warmup');
134 add_action('wp_ajax_nitropack_disable_warmup', 'nitropack_disable_warmup');
135 add_action('wp_ajax_nitropack_warmup_stats', 'nitropack_warmup_stats');
136 add_action('wp_ajax_nitropack_estimate_warmup', 'nitropack_estimate_warmup');
137 add_action('wp_ajax_nitropack_run_warmup', 'nitropack_run_warmup');
138 add_action('wp_ajax_nitropack_purge_single_cache', 'nitropack_purge_single_cache');
139 add_action('wp_ajax_nitropack_invalidate_single_cache', 'nitropack_invalidate_single_cache');
140 add_action('wp_ajax_nitropack_purge_entire_cache', 'nitropack_purge_entire_cache');
141 add_action('wp_ajax_nitropack_dismiss_hosting_notice', 'nitropack_dismiss_hosting_notice');
142 add_action('wp_ajax_nitropack_dismiss_woocommerce_notice', 'nitropack_dismiss_woocommerce_notice');
143 add_action('wp_ajax_nitropack_reconfigure_webhooks', 'nitropack_reconfigure_webhooks');
144 add_action('wp_ajax_nitropack_generate_report', 'nitropack_generate_report'); //diag_ajax_hook
145 add_action('wp_ajax_nitropack_enable_safemode', 'nitropack_enable_safemode');
146 add_action('wp_ajax_nitropack_disable_safemode', 'nitropack_disable_safemode');
147 add_action('wp_ajax_nitropack_safemode_status', 'nitropack_safemode_status');
148 add_action('wp_ajax_nitropack_rml_notification', 'nitropack_rml_notification');
149 add_action('activated_plugin', 'nitropack_upgrade_handler');
150 add_action('deactivated_plugin', 'nitropack_upgrade_handler');
151 add_action('upgrader_process_complete', 'nitropack_upgrade_handler');
152 add_action('update_option_nitropack-enableCompression', 'nitropack_handle_compression_toggle', 10, 2);
153 add_action('add_meta_boxes', 'nitropack_add_meta_box');
154 add_action('plugins_loaded', 'nitropack_offer_safemode');
155
156 add_filter('get_nitropack_notifications', 'nitropack_ignore_dismissed_notifications', 10, 2);
157
158 register_activation_hook(__FILE__, 'nitropack_activate');
159 register_deactivation_hook(__FILE__, 'nitropack_deactivate');
160 } else {
161 if (null !== $nitro = get_nitropack_sdk()) {
162 $GLOBALS["NitroPack.instance"] = $nitro;
163 if (get_option('nitropack-enableCompression') == 1) {
164 $nitro->enableCompression();
165 }
166 add_action('wp', 'nitropack_init');
167 }
168 }
169
170 function nitropack_menu() {
171 global $submenu;
172
173 add_menu_page(
174 'NitroPack Options',
175 'NitroPack',
176 'manage_options',
177 'nitropack',
178 'nitropack_options',
179 'dashicons-performance',
180 25
181 );
182 if (get_nitropack()->getDistribution() !== "oneclick") {
183 add_submenu_page(
184 'nitropack',
185 'System Report',
186 'System Report',
187 'manage_options',
188 'admin.php?page=nitropack&subpage=system-report'
189 );
190 }
191 if (isset($submenu['nitropack'])) {
192 foreach ($submenu['nitropack'] as &$item) {
193 if ($item[0] === 'NitroPack') {
194 $item[0] = 'Dashboard';
195 }
196 }
197 }
198
199 add_filter('plugin_action_links_' . plugin_basename(__FILE__), 'nitropack_action_links');
200 }
201
202 function nitropack_highlight_submenus($parent_file) {
203
204 global $submenu_file;
205
206 if (isset($_GET['page']) && isset($_GET['subpage'])) $submenu_file = 'admin.php?page=' . $_GET['page'] . '&subpage=' . $_GET['subpage'];
207
208 return $parent_file;
209 }
210 add_filter('parent_file', 'nitropack_highlight_submenus');
211
212 function nitropack_action_links($links) {
213 $nitroLinks = array(
214 '<a href="https://support.nitropack.io/hc/en-us/categories/360005122034-Frequently-Asked-Questions-FAQs-" target="_blank" rel="noopener noreferrer">FAQ</a>',
215 '<a href="https://support.nitropack.io/hc/en-us" target="_blank" rel="noopener noreferrer">Docs</a>',
216 '<a href="https://support.nitropack.io/hc/en-us/requests/new" target="_blank" rel="noopener noreferrer">Support</a>',
217 );
218
219 if (get_nitropack()->getDistribution() == "oneclick") {
220 $nitroLinks = apply_filters("nitropack_oneclick_action_links", $nitroLinks);
221 }
222
223 array_unshift($nitroLinks, '<a href="' . admin_url('admin.php?page=nitropack') . '" rel="noopener noreferrer">Settings</a>');
224
225 return array_merge($nitroLinks, $links);
226 }
227
228 add_action('init', function () {
229 if (current_user_can('manage_options')) {
230
231 // Enqueue admin bar menu custom stylesheet
232 add_action('wp_enqueue_scripts', 'enqueue_nitropack_admin_bar_menu_stylesheet');
233 add_action('admin_enqueue_scripts', 'enqueue_nitropack_admin_bar_menu_stylesheet');
234
235 // Enqueue admin menu custom javascript
236 add_action('wp_enqueue_scripts', 'nitropack_admin_bar_script');
237 add_action('admin_enqueue_scripts', 'nitropack_admin_bar_script');
238
239 // Add our admin menu bar entry
240 add_action('admin_bar_menu', 'nitropack_admin_bar_menu', PHP_INT_MAX - 10);
241 add_action('plugins_loaded', 'nitropack_plugin_notices'); // Run the checks early, because we need to set some headers. The results from the checks will be cached, so future calls will work as expected.
242
243 add_action('updated_option', 'nitropack_updated_option', ~PHP_INT_MAX, 3);
244
245 \NitroPack\PluginStateHandler::init();
246
247 add_action('in_admin_header', function () {
248 $screen = get_current_screen();
249 if ($screen->id === 'toplevel_page_nitropack') {
250 remove_all_actions('user_admin_notices');
251 remove_all_actions('admin_notices');
252 remove_all_actions('all_admin_notices');
253 }
254 }, 10);
255 }
256 });
257
258 /**
259 * Load text domain for translations
260 *
261 * @return void
262 */
263 function nitropack_load_textdomain() {
264 global $l10n;
265
266 $domain = 'nitropack';
267
268 if (isset($l10n[$domain])) {
269 return;
270 }
271
272 load_plugin_textdomain($domain, false, basename(dirname(__FILE__)) . '/languages/');
273 }
274
275 add_action('plugins_loaded', 'nitropack_load_textdomain');
276