PluginProbe ʕ •ᴥ•ʔ
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization / 1.12.0
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization v1.12.0
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 2 years ago languages 2 years ago nitropack-sdk 2 years ago view 2 years ago advanced-cache.php 2 years ago batcache-compat.php 4 years ago cf-helper.php 5 years ago constants.php 2 years ago diagnostics.php 2 years ago functions.php 2 years ago helpers.php 3 years ago integrations.php 4 years ago main.php 2 years ago readme.txt 2 years ago uninstall.php 2 years ago wp-cli.php 2 years ago
main.php
250 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.12.0
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 add_options_page( 'NitroPack Options', 'NitroPack', 'manage_options', 'nitropack', 'nitropack_options' );
172 add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), 'nitropack_action_links' );
173 }
174
175 function nitropack_action_links ( $links ) {
176 $nitroLinks = array(
177 '<a href="https://support.nitropack.io/hc/en-us/categories/360005122034-Frequently-Asked-Questions-FAQs-" target="_blank" rel="noopener noreferrer">FAQ</a>',
178 '<a href="https://support.nitropack.io/hc/en-us" target="_blank" rel="noopener noreferrer">Docs</a>',
179 '<a href="https://support.nitropack.io/hc/en-us/requests/new" target="_blank" rel="noopener noreferrer">Support</a>',
180 );
181
182 if (get_nitropack()->getDistribution() == "oneclick") {
183 $nitroLinks = apply_filters("nitropack_oneclick_action_links", $nitroLinks);
184 }
185
186 array_unshift($nitroLinks, '<a href="' . admin_url( 'options-general.php?page=nitropack' ) . '" rel="noopener noreferrer">Settings</a>');
187
188 return array_merge( $nitroLinks, $links );
189 }
190
191 add_action( 'init', function() {
192 if (current_user_can( 'manage_options' )) {
193
194 // Enqueue font awesome
195 add_action( 'wp_enqueue_scripts', 'nitropack_enqueue_load_fa');
196 add_action( 'admin_enqueue_scripts', 'nitropack_enqueue_load_fa');
197
198 // Enqueue admin bar menu custom stylesheet
199 add_action( 'wp_enqueue_scripts', 'enqueue_nitropack_admin_bar_menu_stylesheet');
200 add_action( 'admin_enqueue_scripts', 'enqueue_nitropack_admin_bar_menu_stylesheet');
201
202 // Enqueue admin menu custom javascript
203 add_action( 'wp_enqueue_scripts', 'nitropack_admin_bar_script' );
204 add_action( 'admin_enqueue_scripts', 'nitropack_admin_bar_script' );
205
206 // Add our admin menu bar entry
207 add_action('admin_bar_menu', 'nitropack_admin_bar_menu', PHP_INT_MAX - 10 );
208 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.
209
210 add_action( 'updated_option', 'nitropack_updated_option', ~PHP_INT_MAX, 3 );
211
212 \NitroPack\PluginStateHandler::init();
213
214 add_action('admin_enqueue_scripts', function () {
215 wp_enqueue_script('nitropack_notices_js', plugin_dir_url(__FILE__) . 'view/javascript/np_notices.js?np_v=' . NITROPACK_VERSION);
216 wp_localize_script('nitropack_notices_js', 'nitropack_notices_vars', array(
217 'nonce' => wp_create_nonce(NITROPACK_NONCE),
218 ));
219 });
220
221 add_action('in_admin_header', function() {
222 $screen = get_current_screen();
223 if ($screen->id === 'settings_page_nitropack') {
224 remove_all_actions( 'user_admin_notices' );
225 remove_all_actions( 'admin_notices' );
226 remove_all_actions( 'all_admin_notices' );
227 }
228 }, 99);
229 }
230 });
231
232 /**
233 * Load text domain for translations
234 *
235 * @return void
236 */
237 function nitropack_load_textdomain() {
238 global $l10n;
239
240 $domain = 'nitropack';
241
242 if ( isset( $l10n[ $domain ] ) ) {
243 return;
244 }
245
246 load_plugin_textdomain( $domain, false, basename( dirname( __FILE__ ) ) . '/languages/' );
247 }
248
249 add_action( 'plugins_loaded','nitropack_load_textdomain' );
250