Introduction

En tant que développeur WordPress freelance, j’ai constaté que certains ajustements techniques peuvent considérablement améliorer les performances et la maintenance de vos sites. Dans cet article, je partage avec vous cinq snippets PHP qui font désormais partie de ma boîte à outils standard pour chaque projet WordPress.

Ces extraits de code sont conçus pour résoudre des problèmes spécifiques et optimiser votre site de manière significative. Ils sont facilement personnalisables et prêts à être intégrés dans votre fichier functions.php ou via un plugin de snippets comme Code Snippets.

1. Optimiser la Gestion des Images avec la Suppression des Formats Inutilisés

WordPress génère automatiquement plusieurs formats d’images pour chaque fichier téléchargé. Si votre thème n’utilise pas tous ces formats, ils occupent inutilement de l’espace disque et ralentissent vos sauvegardes.

 
				
					/**
 * Supprime les formats d'images inutilisés pour réduire l'espace de stockage
 * et optimiser les performances de la bibliothèque de médias
 */
function optimiser_formats_images() {
    // Suppression des formats natifs rarement utilisés
    remove_image_size('1536x1536');
    remove_image_size('2048x2048');
    
    // Suppression des miniatures
    remove_image_size('thumbnail');
    
    // Suppression des formats moyens
    remove_image_size('medium');
    remove_image_size('medium_large');
    
    // Suppression des formats générés par WooCommerce (si applicable)
    remove_image_size('woocommerce_thumbnail');
    remove_image_size('woocommerce_single');
    remove_image_size('woocommerce_gallery_thumbnail');
    
    // Désactiver complètement la génération de formats supplémentaires
    add_filter('intermediate_image_sizes', function($sizes) {
        // Conservez uniquement les formats que vous utilisez réellement
        // Par exemple, pour ne garder que 'large' et les formats personnalisés :
        return array_filter($sizes, function($size) {
            return $size === 'large' || strpos($size, 'custom-') === 0;
        });
    });
}
add_action('init', 'optimiser_formats_images');
				
			

Personnalisation : Modifiez la fonction optimiser_formats_images() pour ne conserver que les formats d’images réellement utilisés par votre thème. Si vous utilisez WooCommerce, soyez prudent avec la suppression des formats associés à cette extension.

2. Désactiver les Notifications Automatiques de Mises à Jour

Les notifications par email pour les mises à jour automatiques peuvent rapidement saturer votre boîte de réception, surtout lorsque vous gérez plusieurs sites. Ce snippet désactive ces notifications tout en conservant les mises à jour automatiques.

				
					/**
 * Désactive les notifications par email pour toutes les mises à jour automatiques
 * tout en conservant la fonctionnalité de mise à jour automatique
 */
function desactiver_notifications_mises_a_jour() {
    // Désactiver les notifications pour les plugins
    add_filter('auto_plugin_update_send_email', '__return_false');
    
    // Désactiver les notifications pour les thèmes
    add_filter('auto_theme_update_send_email', '__return_false');
    
    // Désactiver les notifications pour le core WordPress
    add_filter('auto_core_update_send_email', '__return_false');
    
    // Désactiver les emails pour les mises à jour mineures
    add_filter('send_core_update_notification_email', '__return_false');
    
    // Désactiver les emails d'échec de mise à jour automatique
    add_filter('automatic_updates_send_debug_email', '__return_false');
}
add_action('init', 'desactiver_notifications_mises_a_jour');
				
			

Astuce : Vous pouvez conserver certaines notifications en supprimant les lignes correspondantes. Par exemple, si vous souhaitez être informé uniquement des échecs de mise à jour, supprimez la ligne add_filter('automatic_updates_send_debug_email', '__return_false');.

3. Désactiver le Redimensionnement Automatique des Images

Depuis WordPress 5.3, le système redimensionne automatiquement les images volumineuses téléchargées. Bien que cela puisse être utile pour certains utilisateurs, les professionnels préfèrent souvent gérer eux-mêmes l’optimisation des images.

				
					/**
 * Désactive le redimensionnement automatique des images par WordPress
 * Permet un contrôle total sur l'optimisation des images
 */
function desactiver_redimensionnement_automatique() {
    // Désactiver complètement le seuil de redimensionnement
    add_filter('big_image_size_threshold', '__return_false');
    
    // Alternative : modifier le seuil au lieu de désactiver (valeur en pixels)
    // add_filter('big_image_size_threshold', function($threshold) {
    //    return 3000; // Redimensionne uniquement les images de plus de 3000px
    // });
    
    // Désactiver la compression JPEG appliquée par WordPress
    add_filter('jpeg_quality', function($quality) {
        return 100; // Qualité maximale
    });
    
    // Désactiver la rotation automatique basée sur les données EXIF
    add_filter('wp_image_maybe_exif_rotate', '__return_false');
}
add_action('init', 'desactiver_redimensionnement_automatique');
				
			

Important : En désactivant cette fonctionnalité, assurez-vous d’optimiser vos images avant de les télécharger ou d’utiliser un plugin d’optimisation d’images comme Imagify ou ShortPixel.

4. Préchargement Intelligent des Pages avec l’API Speculation Rules et ACF

L’API Speculation Rules est une fonctionnalité moderne qui permet d’améliorer considérablement les performances perçues par l’utilisateur. N’hésitez pas à consulter mon tutoriel complet sur cette fonctionnalité pour comprendre comment intégrer l’API Speculation Rules à WordPress.

Ce snippet utilise ACF pour définir dynamiquement quelles pages doivent être préchargées.

				
					/**
 * Implémente l'API Speculation Rules avec ACF pour le préchargement intelligent des pages
 * Améliore significativement les temps de chargement perçus par l'utilisateur
 */
function implementer_precharger_pages() {
    // Vérifier si la fonction ACF existe
    if (!function_exists('get_field')) {
        return;
    }
    
    // Récupérer les configurations depuis ACF
    $pages_a_precharger = get_field('pages_a_precharger', 'option');
    $eagerness_level = get_field('niveau_precharger', 'option') ?: 'moderate';
    $condition_precharger = get_field('condition_precharger', 'option');
    
    // Vérifier si des pages sont configurées pour le préchargement
    if (empty($pages_a_precharger)) {
        return;
    }
    
    // Construire la liste des URLs à précharger
    $urls = array();
    foreach ($pages_a_precharger as $page) {
        // Vérifier si c'est un objet de publication ou un tableau personnalisé
        if (is_object($page) && isset($page->ID)) {
            $urls[] = get_permalink($page->ID);
        } elseif (is_array($page) && isset($page['url'])) {
            $urls[] = $page['url'];
        } elseif (is_string($page)) {
            $urls[] = $page;
        }
    }
    
    // Configuration des règles de spéculation
    $speculation_rules = array(
        'prerender' => array(
            array(
                'urls' => $urls,
                'eagerness' => $eagerness_level // 'idle', 'moderate', ou 'immediate'
            )
        )
    );
    
    // Ajouter des conditions si spécifiées
    if (!empty($condition_precharger)) {
        $speculation_rules['prerender'][0]['requires'] = array(
            'cpu' => $condition_precharger['cpu'] ?: 'fast',
            'network' => $condition_precharger['network'] ?: '4g'
        );
    }
    
    // Générer et insérer le script dans le head
    $script_json = json_encode($speculation_rules, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
    echo "<script data-no-optimize="1" type=\"speculationrules\">{$script_json}</script>";
}
add_action('wp_head', 'implementer_precharger_pages', 1);

/**
 * Crée les champs ACF nécessaires s'ils n'existent pas déjà
 */
function creer_champs_acf_precharger() {
    if (!function_exists('acf_add_local_field_group')) {
        return;
    }
    
    acf_add_local_field_group(array(
        'key' => 'group_precharger_pages',
        'title' => 'Configuration du préchargement',
        'fields' => array(
            array(
                'key' => 'field_pages_a_precharger',
                'label' => 'Pages à précharger',
                'name' => 'pages_a_precharger',
                'type' => 'relationship',
                'return_format' => 'object',
                'post_type' => array('page', 'post'),
                'multiple' => 1,
                'instructions' => 'Sélectionnez les pages à précharger pour améliorer la vitesse de navigation',
            ),
            array(
                'key' => 'field_niveau_precharger',
                'label' => 'Niveau de priorité',
                'name' => 'niveau_precharger',
                'type' => 'select',
                'choices' => array(
                    'idle' => 'Faible - Uniquement quand le navigateur est inactif',
                    'moderate' => 'Modéré - Balance entre performance et ressources',
                    'immediate' => 'Élevé - Préchargement immédiat'
                ),
                'default_value' => 'moderate',
            ),
        ),
        'location' => array(
            array(
                array(
                    'param' => 'options_page',
                    'operator' => '==',
                    'value' => 'acf-options',
                ),
            ),
        ),
    ));
}
add_action('acf/init', 'creer_champs_acf_precharger');
				
			

Configuration requise : Ce snippet nécessite le plugin Advanced Custom Fields (PRO pour la page d’options). Vous devrez également créer une page d’options ACF si elle n’existe pas déjà. Une alternative est de coder en dur les pages à précharger si vous ne souhaitez pas utiliser ACF. 

5. Template d’Email WordPress Professionnel et Responsive

Les emails par défaut de WordPress sont basiques et ne reflètent pas l’identité visuelle de votre site. Ce snippet transforme tous vos emails WordPress en communications professionnelles, avec support du mode sombre.

				
					/**
 * Applique un template basique à tous les emails WordPress
 */
function appliquer_template_email_basiques($mail) {
    // Vérifier si le contenu est déjà en HTML
    $est_html = strpos($mail['message'], '<html') !== false;
    
    // Convertir le contenu en HTML si ce n'est pas déjà le cas
    $contenu = $est_html ? $mail['message'] : nl2br($mail['message']);
    
    // Récupérer les informations du site
    $nom_site = get_bloginfo('name');
    $url_site = get_bloginfo('url');
    
    // Définir l'en-tête du template (remplacez cette partie par du HTML spécifique)
    $header = 'Insérer du HTML ici pour l\'en-tête, comme un logo ou un titre';
    
    // Définir le pied de page du template (remplacez cette partie par du HTML spécifique)
    $footer = 'Insérer du HTML ici pour le pied de page, comme un copyright et un lien vers le site';
    
    // Ajouter le contenu au template
    $mail['message'] = $header . $contenu . $footer;
    
    // Définir le type de contenu comme HTML
    $mail['headers'] = array_merge(
        is_array($mail['headers']) ? $mail['headers'] : array($mail['headers']),
        array('Content-Type: text/html; charset=UTF-8')
    );
    
    return $mail;
}
add_filter('wp_mail', 'appliquer_template_email_basiques');

				
			

Personnalisation : Pour personnaliser ce template d’email WordPress, vous pouvez modifier plusieurs éléments clés directement dans le code PHP. Tout d’abord, pour personnaliser le texte affiché dans l’en-tête, modifiez le contenu de la balise <h1> dans la section du header. Actuellement, il affiche le nom de votre site avec la fonction get_bloginfo('name'). Si vous souhaitez ajouter un logo, remplacez cette ligne par une balise <img> qui pointe vers l’URL de votre image. Vous pouvez aussi ajuster le texte du pied de page dans la section « footer » en modifiant le contenu du <p> ou en ajoutant d’autres informations, comme des liens ou des mentions légales. Enfin, si vous voulez personnaliser davantage le design, vous pouvez ajouter des styles CSS dans la section <head> du template, notamment pour ajuster la typographie, la mise en forme des liens ou la disposition des éléments de l’email.

Conclusion

L’intégration de ces cinq snippets PHP dans vos projets WordPress peut considérablement améliorer les performances, réduire les tâches de maintenance et offrir une meilleure expérience utilisateur. Chaque snippet est modulaire et peut être utilisé indépendamment selon vos besoins spécifiques.

Pour les développeurs avancés, je vous encourage à explorer ces snippets plus en profondeur, à les adapter à vos besoins spécifiques et à les intégrer dans votre workflow de développement.

N’hésitez pas à me contacter si vous avez des questions sur l’implémentation de ces snippets ou si vous souhaitez discuter de solutions personnalisées pour votre projet WordPress.

Envie d’aller plus loin ? Découvrez ces 21 astuces efficaces pour optimiser les performances de WordPress.

Ressources Complémentaires