esc_html__( 'Speed Up', 'modula-speedup' ), 'title' => esc_html__( 'Optimize your images', 'modula-speedup' ), "icon" => "dashicons dashicons-dashboard", 'priority' => 75, ); return $tabs; } /** * Add video related settings. * * @since 1.0.0 * * @return array $fields. */ public function modula_speedup_fields( $fields ){ $fields['speedup'] = array( 'enable_optimization' => array( "name" => esc_html__('Compression', 'modula-speedup'), "type" => "speedup-select", 'default' => 'default', "values" => array( 'default' => esc_html__('Default', 'modula-speedup'), 'enabled' => esc_html__('Enabled', 'modula-speedup'), 'disabled' => esc_html__('Disabled', 'modula-speedup'), ), "description" => esc_html__('Adjust this setting to enable image optimization.', 'modula-speedup'), 'priority' => 1, ), "thumbnail_optimization" => array( "name" => esc_html__('Thumbnail Compression', 'modula-speedup'), "type" => "speedup-select", "description" => esc_html__('Choose the compression level for your gallery’s image thumbnails', 'modula-speedup'), 'default' => 'default', "values" => array( 'default' => esc_html__('Default', 'modula-speedup'), 'lossless' => esc_html__('Lossless Compresion', 'modula-speedup'), 'lossy' => esc_html__('Lossy Compresion', 'modula-speedup'), 'glossy' => esc_html__('Glossy Compresion', 'modula-speedup'), 'disabled' => esc_html__('Disable Compresion', 'modula-speedup'), ), 'priority' => 5, ), "lightbox_optimization" => array( "name" => esc_html__('Lightbox Compression', 'modula-speedup'), "type" => "speedup-select", "description" => esc_html__('Choose the compression level of your gallery image when it is opened in the selected lightbox.', 'modula-speedup'), 'default' => 'default', "values" => array( 'default' => esc_html__('Default', 'modula-speedup'), 'lossless' => esc_html__('Lossless Compresion', 'modula-speedup'), 'lossy' => esc_html__('Lossy Compresion', 'modula-speedup'), 'glossy' => esc_html__('Glossy Compresion', 'modula-speedup'), 'disabled' => esc_html__('Disable Compresion', 'modula-speedup'), ), 'priority' => 10, ), "modula_speed_help" => array( "name" => '', "type" => "content", "content" => $this->compression_description(), 'priority' => 15, ), ); return $fields; } /** * Add default for item's video url. * * @since 1.0.0 * * @return array $defaults. */ public function default_settings( $defaults ){ $defaults['enable-optimization'] = 'default'; $defaults['thumbnail_optimization'] = 'default'; $defaults['lightbox_optimization'] = 'default'; return $defaults; } public function compression_description(){ $description = ' '; $description .= sprintf( esc_html__( 'When set to *default* the Modula default gallery optimization settings you have chosen under %sModula > Settings%s will be used.', 'modula-speedup' ), '', '' ); $description .= '

'; $description .= sprintf( '%s. %s', esc_html__( 'Lossless Compression', 'modula-speedup' ), esc_html__( 'File sizes will be reduced by removing unnecessary image information (and statistical redundancies) resulting in no loss of quality.', 'modula-speedup' ) ); $description .= '

'; $description .= sprintf( '%s. %s', esc_html__( 'Lossy Compression', 'modula-speedup' ), esc_html__( 'File sizes will be significantly reduced, resulting in a slight loss of image quality that is visible.', 'modula-speedup' ) ); $description .= '

'; $description .= sprintf( '%s. %s', esc_html__( 'Glossy Compression', 'modula-speedup' ), esc_html__( 'Glossy is the best choice if you care about your website’s load time and and you believe that a slight loss of page speed is an acceptable compromise for top-notch image quality.', 'modula-speedup' ) ); $description .= '
'; return $description; } public function add_compression_tab( $tabs ){ $tabs['compression'] = array( 'label' => esc_html__( 'SpeedUp Settings', 'modula-speedup' ), 'priority' => 30, ); return $tabs; } public function render_compression_tab() { include 'tabs/compression.php'; } public function register_compression_option() { // creates our settings in the options table register_setting('modula_speedup', 'modula_speedup', array( $this, 'sanitize_option' ) ); } public function sanitize_option( $current ) { $defaults = array( 'enable_optimization' => 'disabled', 'thumbnail_optimization' => 'lossy', 'lightbox_optimization' => 'lossless', ); $accepted_values = array( 'lossless', 'lossy', 'glossy', 'disabled' ); $new = array(); if ( isset( $current['enable_optimization'] ) ) { $new['enable_optimization'] = 'enabled'; }else{ $new['enable_optimization'] = 'disabled'; } if ( isset( $current['thumbnail_optimization'] ) && in_array( $current['thumbnail_optimization'], $accepted_values ) ) { $new['thumbnail_optimization'] = $current['thumbnail_optimization']; } if ( isset( $current['lightbox_optimization'] ) && in_array( $current['lightbox_optimization'], $accepted_values ) ) { $new['lightbox_optimization'] = $current['lightbox_optimization']; } $new = wp_parse_args( $new, $defaults ); return $new; } public function render_field_type( $html, $field, $value ){ $defaults = get_option( 'modula_speedup', array( 'enable_optimization' => 'disabled', 'thumbnail_optimization' => 'lossy', 'lightbox_optimization' => 'lossless', ) ); $html = ''; $style = ''; if ( 'default' != $value ) { $style = 'display:none'; } $html .= 'Default Status: ' . $defaults[ $field['id'] ] . ''; return $html; } public function check_if_optimize( $status, $settings ){ if ( ! isset( $settings['enable_optimization'] ) ) { return $status; } $defaults = get_option( 'modula_speedup', array( 'enable_optimization' => 'disabled', 'thumbnail_optimization' => 'lossy', 'lightbox_optimization' => 'lossless', ) ); if ( ( 'default' == $settings['enable_optimization'] && 'enabled' == $defaults['enable_optimization'] ) || 'enabled' == $settings['enable_optimization'] ) { return false; } return $status; } } // Load the main plugin class. $modula_speedup_settings = Modula_SpeedUp_Setings::get_instance();