<?php /** * Plugin Name: ShortPixel Critical CSS * Plugin URI: https://shortpixel.com/ * Description: Use ShortPixel's Critical CSS web service to automatically generate the required CSS for the "above the fold" area and improve your website performance * Version: 1.0.1 * Author: ShortPixel * GitHub Plugin URI: https://github.com/short-pixel-optimizer/shortpixel-critical-css * Primary Branch: main * Author URI: https://shortpixel.com * License: GPL3 */ /** * Activation hooks */ //ini_set('display_errors', 1); //ini_set('display_startup_errors', 1); //error_reporting(E_ALL); use Dice\Dice; use \ShortPixel\CriticalCSS\FileLog; use ShortPixel\CriticalCSS\Settings\ApiKeyTools; /** * @SuppressWarnings(PHPMD.StaticAccess) * @return \ShortPixel\CriticalCSS * @alias SPCCSS() */ function shortpixel_critical_css() { return shortpixel_critical_css_container()->create( 'ShortPixel\CriticalCSS' ); } function shortpixel_critical_css_container($env = 'prod' ) { static $container; if ( empty( $container ) ) { $container = new Dice(); include __DIR__ . "/config_{$env}.php"; } return $container; } /** * Init function shortcut */ function shortpixel_critical_css_init() { shortpixel_critical_css()->init(); $settings = shortpixel_critical_css()->settings_manager->get_settings(); if( empty($settings['ccss_spio_apikey_found_dismissed']) && !ApiKeyTools::getApiKey() && ApiKeyTools::getSPIOApiKey() ) { add_action( 'admin_notices', 'shortpixel_critical_css_spio_apikey_found' ); } if(defined('DISABLE_WP_CRON') && DISABLE_WP_CRON && empty($settings['ccss_cron_disabled_notice_dismissed'])) { add_action( 'admin_notices', 'shortpixel_critical_css_cron_disabled_notice' ); } } /** * API run function shortcut */ function shortpixel_critical_css_api_run() { return shortpixel_critical_css()->api_run(intval($_POST['queue_id'])); } /** * API remove function shortcut */ function shortpixel_critical_css_api_remove() { return shortpixel_critical_css()->api_queue_remove(intval($_POST['queue_id'])); } function shortpixel_critical_css_web_run() { return shortpixel_critical_css()->web_queue_run(intval($_POST['queue_id'])); } function shortpixel_critical_css_web_remove() { return shortpixel_critical_css()->web_queue_remove(intval($_POST['queue_id'])); } /** * Get CSS function shortcut */ function shortpixel_critical_css_get() { return shortpixel_critical_css()->get_ccss(); } /** * Contact function shortcut */ function shortpixel_critical_css_contact() { return shortpixel_critical_css()->contact(); } /** * Contact function shortcut */ function shortpixel_critical_css_usekey() { return shortpixel_critical_css()->use_spio_key(); } function shortpixel_critical_css_getapikey() { return shortpixel_critical_css()->get_apikey(); } function shortpixel_critical_css_updateapikey() { return shortpixel_critical_css()->update_apikey(); } function shortpixel_critical_css_dismiss() { return shortpixel_critical_css()->dismiss_notification(); } function shortpixel_critical_css_switch_theme() { return shortpixel_critical_css()->switch_theme(); } function shortpixel_critical_css_force_web_check() { return shortpixel_critical_css()->force_web_check(); } /** * Activate function shortcut */ function shortpixel_critical_css_activate() { shortpixel_critical_css()->init(); shortpixel_critical_css()->activate(); } /** * Deactivate function shortcut */ function shortpixel_critical_css_deactivate() { shortpixel_critical_css()->deactivate(); } /** * Error for older php */ function shortpixel_critical_css_php_upgrade_notice() { $info = get_plugin_data( __FILE__ ); _e( sprintf( ' <div class="error notice"> <p>Oops! %s requires a minimum PHP version of 5.4.0. Your current version is: %s. Please contact your host to upgrade.</p> </div>', $info['Name'], PHP_VERSION ) ); } /** * Error for WP CRON disabled */ function shortpixel_critical_css_cron_disabled_notice() { $info = get_plugin_data( __FILE__ ); _e( sprintf( ' <div class="spccss_notice error notice is-dismissible" data-dismissed-causer="ccss_cron_disabled_notice"> <div class="body-wrap"> <div class="message-wrap" style="padding-bottom: 10px;"> <button style="float:right;margin: 2px 5px 0 20px;" class="button button-primary dismiss-button">Dismiss</button> <p>%s requires the WP Cron to be active, please check your wp-config.php file and remove the "DISABLE_WP_CRON" define. If you\'re using a server-side scheduled job to run the WP Cron, then you can safely ignore this message.</p> </div> </div> </div>', $info['Name'] ) ); } function shortpixel_critical_css_spio_apikey_found() { $info = get_plugin_data( __FILE__ ); _e( ' <div class="spccss_notice notice notice-warning is-dismissible" data-dismissed-causer="ccss_spio_apikey_found"> <p>You already have a ShortPixel account for this website. Do you want to use ShortPixel Critical CSS with this account?</p> <p><button class="button button-primary" id="spccss_usekey">Use this account</button> <button class="button button-primary dismiss-button">Dismiss</button></p> </div>' ); } /** * Error if vendors autoload is missing */ function shortpixel_critical_css_php_vendor_missing() { $info = get_plugin_data( __FILE__ ); _e( sprintf( ' <div class="error notice"> <p>Opps! %s is corrupted it seems, please re-install the plugin.</p> </div>', $info['Name'] ) ); } function shortpixel_critical_css_generate_plugin_links($links) { $in = '<a href="options-general.php?page=' . \ShortPixel\CriticalCSS::LANG_DOMAIN . '">' . __( 'Settings' ) . '</a>'; array_unshift($links, $in); return $links; } function shortpixel_critical_css_admin_init() { shortpixel_critical_css()->first_install(); } function shortpixel_critical_css_rewrite_disabled() { ?> <div class="error notice"> <p><?php _e( 'The URL Rewrites are disabled. The ShortPixel CriticalCSS plugin may not work as intended. Please go to <a href="options-permalink.php">Permalinks Settings</a> and choose any option except Plain. If the Permalinks are not set to plain, you might need to check with your hosting or admin why the rewrites are not working.' ); ?></p> </div> <?php } if ( empty($GLOBALS['wp_rewrite']) ) { $GLOBALS['wp_rewrite'] = new WP_Rewrite(); } if ( !$GLOBALS['wp_rewrite']->using_mod_rewrite_permalinks() ) { add_action( 'admin_notices', 'shortpixel_critical_css_rewrite_disabled' ); } if ( version_compare( PHP_VERSION, '5.4.0' ) < 0 ) { add_action( 'admin_notices', 'shortpixel_critical_css_php_upgrade_notice' ); } else { if ( file_exists( __DIR__ . '/vendor/autoload.php' ) ) { include_once __DIR__ . '/vendor/autoload.php'; add_action( 'admin_init', 'shortpixel_critical_css_admin_init' ); add_action( 'plugins_loaded', 'shortpixel_critical_css_init', 11 ); add_action( 'wp_ajax_shortpixel_critical_css_web_run', 'shortpixel_critical_css_web_run' ); add_action( 'wp_ajax_shortpixel_critical_css_web_remove', 'shortpixel_critical_css_web_remove' ); add_action( 'wp_ajax_shortpixel_critical_css_api_run', 'shortpixel_critical_css_api_run' ); add_action( 'wp_ajax_shortpixel_critical_css_api_remove', 'shortpixel_critical_css_api_remove' ); add_action( 'wp_ajax_shortpixel_critical_css_get', 'shortpixel_critical_css_get' ); add_action( 'wp_ajax_shortpixel_critical_css_contact', 'shortpixel_critical_css_contact' ); add_action( 'wp_ajax_shortpixel_critical_css_usekey', 'shortpixel_critical_css_usekey' ); add_action( 'wp_ajax_shortpixel_critical_css_getapikey', 'shortpixel_critical_css_getapikey' ); add_action( 'wp_ajax_shortpixel_critical_css_updateapikey', 'shortpixel_critical_css_updateapikey' ); add_action( 'wp_ajax_shortpixel_critical_css_dismiss', 'shortpixel_critical_css_dismiss' ); add_action( 'switch_theme', 'shortpixel_critical_css_switch_theme'); add_action( 'wp_ajax_shortpixel_critical_css_force_web_check', 'shortpixel_critical_css_force_web_check' ); add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'shortpixel_critical_css_generate_plugin_links' ); //for plugin settings page register_activation_hook( __FILE__, 'shortpixel_critical_css_activate' ); register_deactivation_hook( __FILE__, 'shortpixel_critical_css_deactivate' ); } else { add_action( 'admin_notices', 'shortpixel_critical_css_php_vendor_missing' ); } } if ( !defined( 'SPCCSS_DEBUG' ) ) { define( 'SPCCSS_DEBUG', isset( $_GET[ 'SPCCSS_DEBUG' ] ) ? intval($_GET[ 'SPCCSS_DEBUG' ]) : false); //: FileLog::DEBUG_AREA_ALL); }