PluginProbe ʕ •ᴥ•ʔ
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization / 1.8.3
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization v1.8.3
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 3 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 3 years ago
main.php
230 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.8.3
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 $canPrintScripts = !nitropack_is_amp_page() // Make sure we don't accidentally print a non-amp compatible script to an amp page
43 && (!isset($_SERVER['HTTP_SEC_FETCH_DEST']) || $_SERVER['HTTP_SEC_FETCH_DEST'] === 'document')
44 && (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest');
45 if ($canPrintScripts) {
46 return $script;
47 } else {
48 return "";
49 }
50 });
51 add_action( 'pre_post_update', 'nitropack_log_post_pre_update', 10, 3);
52 add_filter( 'woocommerce_rest_pre_insert_product_object', 'nitropack_log_product_pre_api_update', 10, 3 );
53 // add_action( 'clean_post_cache', 'nitropack_post_updated', 10, 3);
54 // add_action( 'post_updated', 'nitropack_post_updated', 10, 3);
55 // add_action( 'save_post', 'nitropack_post_updated', 10, 3);
56 // add_action( 'edited_term_taxonomy', 'nitropack_post_updated', 10, 3);
57 // add_action( 'woocommerce_update_product', 'nitropack_postmeta_updated', 10, 4);
58 add_action( 'updated_postmeta', 'nitropack_postmeta_updated', 10, 4);
59 add_action( 'set_object_terms', 'nitropack_sot', 10, 6);
60 add_action( 'transition_post_status', 'nitropack_handle_post_transition', 10, 3);
61 add_action( 'publish_post', 'nitropack_handle_first_publish', 10, 1);
62 add_action( 'transition_comment_status', 'nitropack_handle_comment_transition', 10, 3);
63 add_action( 'comment_post', 'nitropack_handle_comment_post', 10, 2);
64 add_action( 'switch_theme', 'nitropack_theme_handler' );
65 register_shutdown_function('nitropack_execute_purges');
66 register_shutdown_function('nitropack_execute_invalidations');
67 register_shutdown_function('nitropack_execute_warmups');
68
69 add_action( 'woocommerce_product_object_updated_props', 'nitropack_handle_product_updates', 0, 2);
70 add_action( 'woocommerce_rest_insert_product', function($post, $request, $creating) {
71 if (!$creating) {
72 nitropack_detect_changes_and_clean_post_cache($post);
73 }
74 }, 10, 3);
75 add_action( 'woocommerce_rest_insert_product_object', function($product, $request, $creating) {
76 if (!$creating) {
77
78 $post = get_post($product->get_id());
79 nitropack_detect_changes_and_clean_post_cache($post);
80 }
81 }, 10, 3);
82
83 add_action('wcml_set_client_currency', function($currency) {
84 setcookie('np_wc_currency', $currency, time() + (86400 * 7), "/");
85 });
86
87 if (nitropack_has_advanced_cache()) {
88 // Handle automated updates
89 if (!defined("NITROPACK_ADVANCED_CACHE_VERSION") || NITROPACK_VERSION != NITROPACK_ADVANCED_CACHE_VERSION) {
90 add_action( 'plugins_loaded', 'nitropack_install_advanced_cache' );
91 }
92 }
93
94 add_action('wp_footer', 'nitropack_print_heartbeat_script');
95 add_action('admin_footer', 'nitropack_print_heartbeat_script');
96 add_action('get_footer', 'nitropack_print_heartbeat_script');
97
98 add_action('wp_footer', 'nitropack_print_cookie_handler_script');
99 add_action('admin_footer', 'nitropack_print_cookie_handler_script');
100 add_action('admin_footer', function() {
101 nitropack_setcookie("nitroCachedPage", 0, time() - 86400);
102 }); // Clear the nitroCachePage cookie
103 add_action('get_footer', 'nitropack_print_cookie_handler_script');
104
105 if ( is_admin() ) {
106 add_action( 'admin_menu', 'nitropack_menu' );
107 add_action( 'admin_init', 'register_nitropack_settings' );
108 add_action( 'admin_notices', 'nitropack_admin_notices' );
109 add_action( 'network_admin_notices', 'nitropack_admin_notices' );
110 add_action( 'wp_ajax_nitropack_purge_cache', 'nitropack_purge_cache' );
111 add_action( 'wp_ajax_nitropack_invalidate_cache', 'nitropack_invalidate_cache' );
112 add_action( 'wp_ajax_nitropack_clear_residual_cache', 'nitropack_clear_residual_cache' );
113 add_action( 'wp_ajax_nitropack_verify_connect', 'nitropack_verify_connect_ajax' );
114 add_action( 'wp_ajax_nitropack_disconnect', 'nitropack_disconnect' );
115 add_action( 'wp_ajax_nitropack_test_compression_ajax', 'nitropack_test_compression_ajax' );
116 add_action( 'wp_ajax_nitropack_set_compression_ajax', 'nitropack_set_compression_ajax' );
117 add_action( 'wp_ajax_nitropack_set_auto_cache_purge_ajax', 'nitropack_set_auto_cache_purge_ajax' );
118 add_action( 'wp_ajax_nitropack_set_cart_cache_ajax', 'nitropack_set_cart_cache_ajax' );
119 add_action( 'wp_ajax_nitropack_set_bb_cache_purge_sync_ajax', 'nitropack_set_bb_cache_purge_sync_ajax' );
120 add_action( 'wp_ajax_nitropack_set_legacy_purge_ajax', 'nitropack_set_legacy_purge_ajax' );
121 add_action( 'wp_ajax_nitropack_set_cacheable_post_types', 'nitropack_set_cacheable_post_types' );
122 add_action( 'wp_ajax_nitropack_enable_warmup', 'nitropack_enable_warmup' );
123 add_action( 'wp_ajax_nitropack_disable_warmup', 'nitropack_disable_warmup' );
124 add_action( 'wp_ajax_nitropack_warmup_stats', 'nitropack_warmup_stats' );
125 add_action( 'wp_ajax_nitropack_estimate_warmup', 'nitropack_estimate_warmup' );
126 add_action( 'wp_ajax_nitropack_run_warmup', 'nitropack_run_warmup' );
127 add_action( 'wp_ajax_nitropack_purge_single_cache', 'nitropack_purge_single_cache' );
128 add_action( 'wp_ajax_nitropack_invalidate_single_cache', 'nitropack_invalidate_single_cache' );
129 add_action( 'wp_ajax_nitropack_purge_entire_cache', 'nitropack_purge_entire_cache' );
130 add_action( 'wp_ajax_nitropack_dismiss_hosting_notice', 'nitropack_dismiss_hosting_notice' );
131 add_action( 'wp_ajax_nitropack_dismiss_woocommerce_notice', 'nitropack_dismiss_woocommerce_notice' );
132 add_action( 'wp_ajax_nitropack_reconfigure_webhooks', 'nitropack_reconfigure_webhooks' );
133 add_action( 'wp_ajax_nitropack_generate_report', 'nitropack_generate_report' );//diag_ajax_hook
134 add_action( 'wp_ajax_nitropack_enable_safemode', 'nitropack_enable_safemode' );
135 add_action( 'wp_ajax_nitropack_disable_safemode', 'nitropack_disable_safemode' );
136 add_action( 'wp_ajax_nitropack_safemode_status', 'nitropack_safemode_status' );
137 add_action( 'wp_ajax_nitropack_rml_notification', 'nitropack_rml_notification' );
138 add_action( 'activated_plugin', 'nitropack_upgrade_handler' );
139 add_action( 'deactivated_plugin', 'nitropack_upgrade_handler' );
140 add_action( 'upgrader_process_complete', 'nitropack_upgrade_handler');
141 add_action( 'update_option_nitropack-enableCompression', 'nitropack_handle_compression_toggle', 10, 2 );
142 add_action( 'add_meta_boxes', 'nitropack_add_meta_box' );
143 add_action( 'plugins_loaded', 'nitropack_offer_safemode');
144
145 add_filter('get_nitropack_notifications', 'nitropack_ignore_dismissed_notifications', 10, 2);
146
147 register_activation_hook( __FILE__, 'nitropack_activate' );
148 register_deactivation_hook( __FILE__, 'nitropack_deactivate' );
149 } else {
150 if (null !== $nitro = get_nitropack_sdk()) {
151 $GLOBALS["NitroPack.instance"] = $nitro;
152 if (get_option('nitropack-enableCompression') == 1) {
153 $nitro->enableCompression();
154 }
155 add_action( 'wp', 'nitropack_init' );
156 }
157 }
158
159 function nitropack_menu() {
160 add_options_page( 'NitroPack Options', 'NitroPack', 'manage_options', 'nitropack', 'nitropack_options' );
161 add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), 'nitropack_action_links' );
162 }
163
164 function nitropack_action_links ( $links ) {
165 $nitroLinks = array(
166 '<a href="' . admin_url( 'options-general.php?page=nitropack' ) . '" rel="noopener noreferrer">Settings</a>',
167 '<a href="https://support.nitropack.io/hc/en-us/categories/360005122034-Frequently-Asked-Questions-FAQs-" target="_blank" rel="noopener noreferrer">FAQ</a>',
168 '<a href="https://support.nitropack.io/hc/en-us" target="_blank" rel="noopener noreferrer">Docs</a>',
169 '<a href="https://support.nitropack.io/hc/en-us/requests/new" target="_blank" rel="noopener noreferrer">Support</a>',
170 );
171 return array_merge( $nitroLinks, $links );
172 }
173
174 add_action( 'init', function() {
175 if (current_user_can( 'manage_options' )) {
176
177 // Enqueue font awesome
178 add_action( 'wp_enqueue_scripts', 'nitropack_enqueue_load_fa');
179 add_action( 'admin_enqueue_scripts', 'nitropack_enqueue_load_fa');
180
181 // Enqueue admin bar menu custom stylesheet
182 add_action( 'wp_enqueue_scripts', 'enqueue_nitropack_admin_bar_menu_stylesheet');
183 add_action( 'admin_enqueue_scripts', 'enqueue_nitropack_admin_bar_menu_stylesheet');
184
185 // Enqueue admin menu custom javascript
186 add_action( 'wp_enqueue_scripts', 'nitropack_admin_bar_script' );
187 add_action( 'admin_enqueue_scripts', 'nitropack_admin_bar_script' );
188
189 // Add our admin menu bar entry
190 add_action('admin_bar_menu', 'nitropack_admin_bar_menu', PHP_INT_MAX - 10 );
191 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.
192
193 add_action( 'updated_option', 'nitropack_updated_option', ~PHP_INT_MAX, 3 );
194
195 \NitroPack\PluginStateHandler::init();
196
197 add_action( 'admin_enqueue_scripts', function() {
198 wp_enqueue_script('nitropack_notices_js', plugin_dir_url(__FILE__) . 'view/javascript/np_notices.js?np_v=' . NITROPACK_VERSION);
199 });
200
201 add_action('in_admin_header', function() {
202 $screen = get_current_screen();
203 if ($screen->id === 'settings_page_nitropack') {
204 remove_all_actions( 'user_admin_notices' );
205 remove_all_actions( 'admin_notices' );
206 remove_all_actions( 'all_admin_notices' );
207 }
208 }, 99);
209 }
210 });
211
212 /**
213 * Load text domain for translations
214 *
215 * @return void
216 */
217 function nitropack_load_textdomain() {
218 global $l10n;
219
220 $domain = 'nitropack';
221
222 if ( isset( $l10n[ $domain ] ) ) {
223 return;
224 }
225
226 load_plugin_textdomain( $domain, false, basename( dirname( __FILE__ ) ) . '/languages/' );
227 }
228
229 add_action( 'plugins_loaded','nitropack_load_textdomain' );
230