settings_screen_do_remote_http = apply_filters( 'autoptimize_settingsscreen_remotehttp', $this->settings_screen_do_remote_http ); $this->run(); } protected function enabled() { return apply_filters( 'autoptimize_filter_show_criticalcss_tabs', true ); } public function run() { if ( $this->enabled() ) { add_filter( 'autoptimize_filter_settingsscreen_tabs', array( $this, 'add_critcss_tabs' ), 10, 1 ); add_action( 'admin_enqueue_scripts', array( $this, 'admin_assets' ) ); if ( $this->is_multisite_network_admin() && autoptimizeOptionWrapper::is_ao_active_for_network() ) { add_action( 'network_admin_menu', array( $this, 'add_critcss_admin_menu' ) ); } else { add_action( 'admin_menu', array( $this, 'add_critcss_admin_menu' ) ); } $criticalcss_ajax = new autoptimizeCriticalCSSSettingsAjax(); } } public function add_critcss_tabs( $in ) { $in = array_merge( $in, array( 'ao_critcss' => '⚡ ' . __( 'Critical CSS', 'autoptimize' ) ) ); return $in; } public function add_critcss_admin_menu() { // Register settings. register_setting( 'ao_ccss_options_group', 'autoptimize_css_defer_inline' ); register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_rules' ); register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_additional' ); register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_queue' ); register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_viewport' ); register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_finclude' ); register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_rtimelimit' ); register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_noptimize' ); register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_debug' ); register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_key' ); register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_keyst' ); register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_loggedin' ); register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_forcepath' ); register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_deferjquery' ); register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_domain' ); register_setting( 'ao_ccss_options_group', 'autoptimize_ccss_unloadccss' ); // And add submenu-page. add_submenu_page( null, 'Critical CSS', 'Critical CSS', 'manage_options', 'ao_critcss', array( $this, 'ao_criticalcsssettings_page' ) ); } public function admin_assets( $hook ) { // Return if plugin is not hooked. if ( 'settings_page_ao_critcss' != $hook && 'admin_page_ao_critcss' != $hook ) { return; } // Stylesheets to add. wp_enqueue_style( 'wp-jquery-ui-dialog' ); wp_enqueue_style( 'ao-tablesorter', plugins_url( 'critcss-inc/css/ao-tablesorter/style.css', __FILE__ ) ); wp_enqueue_style( 'ao-ccss-admin-css', plugins_url( 'critcss-inc/css/admin_styles.css', __FILE__ ) ); // Scripts to add. wp_enqueue_script( 'jquery-ui-dialog', array( 'jquery' ) ); wp_enqueue_script( 'md5', plugins_url( 'critcss-inc/js/md5.min.js', __FILE__ ), null, null, true ); wp_enqueue_script( 'tablesorter', plugins_url( 'critcss-inc/js/jquery.tablesorter.min.js', __FILE__ ), array( 'jquery' ), null, true ); wp_enqueue_script( 'ao-ccss-admin-license', plugins_url( 'critcss-inc/js/admin_settings.js', __FILE__ ), array( 'jquery' ), null, true ); } public function ao_criticalcsssettings_page() { // these are not OO yet, simply require for now. require_once( 'critcss-inc/admin_settings_rules.php' ); require_once( 'critcss-inc/admin_settings_queue.php' ); require_once( 'critcss-inc/admin_settings_key.php' ); require_once( 'critcss-inc/admin_settings_adv.php' ); require_once( 'critcss-inc/admin_settings_explain.php' ); // fetch all options at once and populate them individually explicitely as globals. $all_options = autoptimizeCriticalCSSBase::fetch_options(); foreach ( $all_options as $_option => $_value ) { global ${$_option}; ${$_option} = $_value; } ?>