What is the tutorial about?
Web Squadron will show you essential WordPress settings and recommended plugins to establish a strong foundation for your website. Whether you’re a beginner or an experienced user, these tips will help you optimize your website’s performance, security, and user experience. By the end of this tutorial, you’ll have a better understanding of how to configure your WordPress site for optimal results.
Use Cases for this Tutorial
- New WordPress users looking to set up their website with the best settings and plugins for optimal performance
- Experienced users who want to review and optimize their current WordPress settings
- Web developers and designers seeking to improve their clients’ websites with the most effective settings and plugins
- Business owners aiming to enhance their website’s user experience and performance
Code Snippets
Source: https://websquadron.co.uk/page-speed-performance-wordpress-code-snippets/
Remove Google Fonts for Elementor Sites
add_filter( 'elementor/frontend/print_google_fonts', '__return_false' );
Remove Google Fonts for Non-Elementor Sites
function disable_google_fonts() {
return false;
}
add_filter( 'print_google_fonts', 'disable_google_fonts' );
Ensure Webfont is Loaded for Elementor Sites
add_filter( 'elementor_pro/custom_fonts/font_display', function( $current_value, $font_family, $data ) {
return 'swap';
}, 10, 3 );
Ensure Webfont is Loaded for Non-Elementor Sites
function custom_font_display( $current_value, $font_family, $data ) {
return 'swap';
}
add_filter( 'font_display', 'custom_font_display', 10, 3 );
Stop Lazy Load
add_filter( 'wp_lazy_loading_enabled', '__return_false' );
Or – Just Stop Lazy Load for One 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 );
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 admina
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
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;
}
Remove Gutenberg CSS
/*
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();
}