PluginProbe ʕ •ᴥ•ʔ
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization / 1.9.1
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization v1.9.1
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
236 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.9.1
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="https://support.nitropack.io/hc/en-us/categories/360005122034-Frequently-Asked-Questions-FAQs-" target="_blank" rel="noopener noreferrer">FAQ</a>',
167 '<a href="https://support.nitropack.io/hc/en-us" target="_blank" rel="noopener noreferrer">Docs</a>',
168 '<a href="https://support.nitropack.io/hc/en-us/requests/new" target="_blank" rel="noopener noreferrer">Support</a>',
169 );
170
171 if (get_nitropack()->getDistribution() == "oneclick") {
172 $nitroLinks = apply_filters("nitropack_oneclick_action_links", $nitroLinks);
173 }
174
175 array_unshift($nitroLinks, '<a href="' . admin_url( 'options-general.php?page=nitropack' ) . '" rel="noopener noreferrer">Settings</a>');
176
177 return array_merge( $nitroLinks, $links );
178 }
179
180 add_action( 'init', function() {
181 if (current_user_can( 'manage_options' )) {
182
183 // Enqueue font awesome
184 add_action( 'wp_enqueue_scripts', 'nitropack_enqueue_load_fa');
185 add_action( 'admin_enqueue_scripts', 'nitropack_enqueue_load_fa');
186
187 // Enqueue admin bar menu custom stylesheet
188 add_action( 'wp_enqueue_scripts', 'enqueue_nitropack_admin_bar_menu_stylesheet');
189 add_action( 'admin_enqueue_scripts', 'enqueue_nitropack_admin_bar_menu_stylesheet');
190
191 // Enqueue admin menu custom javascript
192 add_action( 'wp_enqueue_scripts', 'nitropack_admin_bar_script' );
193 add_action( 'admin_enqueue_scripts', 'nitropack_admin_bar_script' );
194
195 // Add our admin menu bar entry
196 add_action('admin_bar_menu', 'nitropack_admin_bar_menu', PHP_INT_MAX - 10 );
197 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.
198
199 add_action( 'updated_option', 'nitropack_updated_option', ~PHP_INT_MAX, 3 );
200
201 \NitroPack\PluginStateHandler::init();
202
203 add_action( 'admin_enqueue_scripts', function() {
204 wp_enqueue_script('nitropack_notices_js', plugin_dir_url(__FILE__) . 'view/javascript/np_notices.js?np_v=' . NITROPACK_VERSION);
205 });
206
207 add_action('in_admin_header', function() {
208 $screen = get_current_screen();
209 if ($screen->id === 'settings_page_nitropack') {
210 remove_all_actions( 'user_admin_notices' );
211 remove_all_actions( 'admin_notices' );
212 remove_all_actions( 'all_admin_notices' );
213 }
214 }, 99);
215 }
216 });
217
218 /**
219 * Load text domain for translations
220 *
221 * @return void
222 */
223 function nitropack_load_textdomain() {
224 global $l10n;
225
226 $domain = 'nitropack';
227
228 if ( isset( $l10n[ $domain ] ) ) {
229 return;
230 }
231
232 load_plugin_textdomain( $domain, false, basename( dirname( __FILE__ ) ) . '/languages/' );
233 }
234
235 add_action( 'plugins_loaded','nitropack_load_textdomain' );
236