Elementor Website Course Logo

WordPress Page Speed

WordPress Page Speed Optimization Elementor Websites

This is how to Boost WordPress Page Speed Optimisation WordPress for FREE. 

Use the Code Snippets below, and ensure you use the correct snippet depending on if you’re using an Elementor or a Non-Elementor WordPress site.

Hover over the Snippet and then click the ‘Copy’ Button.

We recommend backups before applying in case your site has any problems (that could be due to other codes, plugins, or the set up).

Sign up for our Learn to Build an Elementor Website Course.

Remove Google Fonts (Elementor Site) for Elementor Optimization

				
					add_filter( 'elementor/frontend/print_google_fonts', '__return_false' );
				
			

Reduce Revisions to 3 to improve WordPress Optimization.

				
					define('WP_POST_REVISIONS', 3);
				
			

Ensure Webfont is Loaded (Elementor Site)

				
					add_filter( 'elementor_pro/custom_fonts/font_display', function( $current_value, $font_family, $data ) {
	return 'swap';
}, 10, 3 );
				
			

Stop Lazy Load

				
					add_filter( 'wp_lazy_loading_enabled', '__return_false' );
				
			

Remove Unused JS

				
					/**
 * We will Dequeue the jQuery UI script as example.
 *
 * Hooked to the wp_print_scripts action, with a late priority (99),
 * so that it is after the script was enqueued.
 */
function wp_remove_scripts() {
// check if user is admin
 if (current_user_can( 'update_core' )) {
            return;
        } 
 else {
    // Check for the page you want to target
    if ( is_page( 'homepage' ) ) {
        // Remove Scripts
  wp_dequeue_style( 'jquery-ui-core' );
     }
 }
}
add_action( 'wp_enqueue_scripts', 'wp_remove_scripts', 99 );
				
			

Explicit Fixed Width and Height when you have Elementor Carousels and want to apply Elementor Optimization.

				
					add_filter( 'the_content', 'add_image_dimensions' );

function add_image_dimensions( $content ) {
    preg_match_all( '/<img[^>]+>/i', $content, $images );
    if ( count( $images ) < 1 ) {
        return $content;
    }

    foreach ( $images[0] as $image ) {
        preg_match_all( '/(alt|title|src|width|class|id|height)=("[^"]*")/i', $image, $img );
        if ( ! in_array( 'src', $img[1] ) ) {
            continue;
        }

        // Check if the image has the excluded classes
        if ( in_array( 'class', $img[1] ) ) {
            $classes = $img[2][ array_search( 'class', $img[1] ) ];
            if ( preg_match( '/\b(elementor-widget-image-carousel|swiper|swiper-container)\b/i', $classes ) ) {
                continue;
            }
        }

        if ( ! in_array( 'width', $img[1] ) || ! in_array( 'height', $img[1] ) ) {
            $src    = $img[2][ array_search( 'src', $img[1] ) ];
            $alt    = in_array( 'alt', $img[1] ) ? ' alt=' . $img[2][ array_search( 'alt', $img[1] ) ] : '';
            $title  = in_array( 'title', $img[1] ) ? ' title=' . $img[2][ array_search( 'title', $img[1] ) ] : '';
            $class  = in_array( 'class', $img[1] ) ? ' class=' . $img[2][ array_search( 'class', $img[1] ) ] : '';
            $id     = in_array( 'id', $img[1] ) ? ' id=' . $img[2][ array_search( 'id', $img[1] ) ] : '';
            list( $width, $height, $type, $attr ) = getimagesize( str_replace( "\"", "", $src ) );
            $image_tag = sprintf( '<img src=%s%s%s%s%s width="%d" height="%d" />', $src, $alt, $title, $class, $id, $width, $height );
            $content   = str_replace( $image, $image_tag, $content );
        }
    }

    return $content;
}
				
			

Add Purge Site to Admin Bar

				
					/*
Plugin Name: Purge Cache
Description: Adds a button to the WordPress dashboard to clear the object cache
*/

add_action( 'admin_bar_menu', 'add_purge_cache_button', 999 );

function add_purge_cache_button( $wp_admin_bar ) {
    if ( ! current_user_can( 'manage_options' ) ) {
        return;
    }

    $args = array(
        'id'    => 'purge-cache',
        'title' => 'Purge Cache',
        'href'  => '#',
        'meta'  => array( 'class' => 'purge-cache' )
    );
    $wp_admin_bar->add_node( $args );
}

add_action( 'admin_footer', 'add_purge_cache_script' );

function add_purge_cache_script() {
    if ( ! current_user_can( 'manage_options' ) ) {
        return;
    }
    ?>
    <script>
    jQuery(document).ready(function($) {
        $('#wp-admin-bar-purge-cache').click(function() {
            if (confirm('Are you sure you want to purge the cache?')) {
                $.ajax({
                    url: '<?php echo admin_url( 'admin-ajax.php' ); ?>',
                    data: {
                        action: 'purge_cache',
                    },
                    success: function() {
                        alert('Cache purged successfully!');
                    },
                    error: function() {
                        alert('An error occurred while purging the cache.');
                    }
                });
            }
        });
    });
    </script>
    <?php
}

add_action( 'wp_ajax_purge_cache', 'purge_cache_callback' );

function purge_cache_callback() {
    global $wp_object_cache;
    if ( ! current_user_can( 'manage_options' ) ) {
        wp_die();
    }

    wp_cache_flush();

    wp_die();
}

				
			

Removed Unused CSS (Elementor Only) but can be ignored if you are using PhastPress for WordPress Optimization.

				
					function exclude_specific_css_files($src, $handle) {
    // List of CSS file URLs to exclude from minification
    $excluded_css_files = array(
        '/wp-content/plugins/elementor/assets/css/frontend-lite.min.css',
        '/wp-content/plugins/elementor-pro/assets/css/frontend-lite.min.css',
    );

    // Check if the current CSS file URL matches any of the excluded URLs
    foreach ($excluded_css_files as $excluded_css_file) {
        if (strpos($src, $excluded_css_file) !== false) {
            return $src; // Return the original unminified CSS file
        }
    }

    // If the CSS file is not in the excluded list, proceed with minification
    return minify_css_content($src);
}

function minify_css_content($content) {
    $content = preg_replace('/\s+/', ' ', $content); // Remove extra whitespaces
    $content = str_replace(array("\r\n", "\r", "\n", "\t"), '', $content); // Remove newlines and tabs

    return $content;
}

add_filter('style_loader_src', 'exclude_specific_css_files', 10, 2);

				
			

Remove Google Fonts (Non-Elementor Site) to boost WordPress Page Speed Optimization

				
					function disable_google_fonts() {
	return false;
}
add_filter( 'print_google_fonts', 'disable_google_fonts' );
				
			

Ensure Webfont is Loaded (Non-Elementor Site)

				
					function custom_font_display( $current_value, $font_family, $data ) {
	return 'swap';
}
add_filter( 'font_display', 'custom_font_display', 10, 3 );
				
			

Stop Lazy Load for a specific image

Place your Media Library into List View and not Gallery, and then get the ID for the chosen image. Then copy and paste that 3 times over the example code below (10576)

				
					/* Disable lazy loading for single image* */
function wphelp_no_lazy_load_id( $value, $image, $context ) {
if ( 'the_content' === $context ) {
$image_url = wp_get_attachment_image_url( 10576, 'large' ); 
if ( false !== strpos( $image, ' src="' . $image_url . '"' )) {
return false;
}
}
return $value;
}
add_filter( 'wp_img_tag_add_loading_attr', 'wphelp_no_lazy_load_id', 10576, 10576 );
				
			

Explicit Fixed Width and Height

				
					add_filter( 'the_content', 'add_image_dimensions' );

function add_image_dimensions( $content ) {

    preg_match_all( '/<img[^>]+>/i', $content, $images);

    if (count($images) < 1)
        return $content;

    foreach ($images[0] as $image) {
        preg_match_all( '/(alt|title|src|width|class|id|height)=("[^"]*")/i', $image, $img );

        if ( !in_array( 'src', $img[1] ) )
            continue;

        if ( !in_array( 'width', $img[1] ) || !in_array( 'height', $img[1] ) ) {
            $src = $img[2][ array_search('src', $img[1]) ];
            $alt = in_array( 'alt', $img[1] ) ? ' alt=' . $img[2][ array_search('alt', $img[1]) ] : '';
            $title = in_array( 'title', $img[1] ) ? ' title=' . $img[2][ array_search('title', $img[1]) ] : '';
            $class = in_array( 'class', $img[1] ) ? ' class=' . $img[2][ array_search('class', $img[1]) ] : '';
            $id = in_array( 'id', $img[1] ) ? ' id=' . $img[2][ array_search('id', $img[1]) ] : '';
            list( $width, $height, $type, $attr ) = getimagesize( str_replace( "\"", "" , $src ) );

            $image_tag = sprintf( '<img src=%s%s%s%s%s width="%d" height="%d" />', $src, $alt, $title, $class, $id, $width, $height );
            $content = str_replace($image, $image_tag, $content);
        }
    }

    return $content;
}
				
			

Convert Images to WebP when added to the Media Library to reduce large images loading on your page and to improve WordPress Page Speed Optimization.

				
					/**
 * Convert Uploaded Images to WebP Format
 *
 * This snippet converts uploaded images (JPEG, PNG, GIF) to WebP format
 * automatically in WordPress. Ideal for use in a theme's functions.php file,
 * or with plugins like Code Snippets or WPCodeBox.
 * 
 * @package    WordPress_Custom_Functions
 * @author     Mark Harris
 * @link       www.christchurchwebsolutions.co.uk
 *
 * Usage Instructions:
 * - Add this snippet to your theme's functions.php file, or add it as a new
 *   snippet in Code Snippets or WPCodeBox.
 * - The snippet hooks into WordPress's image upload process and converts
 *   uploaded images to the WebP format.
 *
 * Optional Configuration:
 * - By default, the original image file is deleted after conversion to WebP.
 *   If you prefer to keep the original image file, simply comment out or remove
 *   the line '@unlink( $file_path );' in the wpturbo_handle_upload_convert_to_webp function.
 *   This will preserve the original uploaded image file alongside the WebP version.
 */

add_filter( 'wp_handle_upload', 'wpturbo_handle_upload_convert_to_webp' );

function wpturbo_handle_upload_convert_to_webp( $upload ) {
    if ( $upload['type'] == 'image/jpeg' || $upload['type'] == 'image/png' || $upload['type'] == 'image/gif' ) {
        $file_path = $upload['file'];

        // Check if ImageMagick or GD is available
        if ( extension_loaded( 'imagick' ) || extension_loaded( 'gd' ) ) {
            $image_editor = wp_get_image_editor( $file_path );
            if ( ! is_wp_error( $image_editor ) ) {
                $file_info = pathinfo( $file_path );
                $dirname   = $file_info['dirname'];
                $filename  = $file_info['filename'];

                // Create a new file path for the WebP image
                $new_file_path = $dirname . '/' . $filename . '.webp';

                // Attempt to save the image in WebP format
                $saved_image = $image_editor->save( $new_file_path, 'image/webp' );
                if ( ! is_wp_error( $saved_image ) && file_exists( $saved_image['path'] ) ) {
                    // Success: replace the uploaded image with the WebP image
                    $upload['file'] = $saved_image['path'];
                    $upload['url']  = str_replace( basename( $upload['url'] ), basename( $saved_image['path'] ), $upload['url'] );
                    $upload['type'] = 'image/webp';

                    // Optionally remove the original image
                    @unlink( $file_path );
                }
            }
        }
    }

    return $upload;
}
				
			

Excellent

Click Download for your file

Welcome