Wordpress

Comment désactiver le chargement des plugins WordPress sur des pages et des publications spécifiques

En ce qui concerne les performances de WordPress, nous avons beaucoup à dire sur les plugins. Chaque plugin ajoute du code PHP qui doit être exécuté, inclut généralement des scripts et des styles, et peut même exécuter des requêtes supplémentaires sur la base de données. Cela signifie que des plugins inutiles peuvent affecter la vitesse de la page et peuvent avoir un impact négatif sur l'expérience utilisateur et le classement de votre page.

Par exemple, considérons un plugin qui crée et affiche des formulaires personnalisés sur les pages d'accueil, comme Contact Form 7. En règle générale, vous n'auriez besoin que d'un seul formulaire sur une seule page, mais idéalement, vous souhaiterez peut-être intégrer un formulaire sur n'importe quelle page en utilisant le le shortcode du plugin. Pour cette raison, Contact Form 7 charge des scripts et des styles sur chaque page de votre site Web.

Mais voulez-vous vraiment exécuter le code du plugin et inclure des scripts et des styles sur chaque page de votre site WordPress ?

Dans cet article, je vais vous montrer comment empêcher le chargement de plugins inutiles sur des articles/pages spécifiques, afin que vous puissiez installer des plugins supplémentaires (ne devenez pas fou bien sûr) et que votre site Web WordPress se charge toujours rapidement. Pour accomplir cette tâche, nous allons désactiver les plugins WordPress par programme sur des articles et des pages spécifiques. Il s'agit d'un processus en quatre étapes :

  • Choisissez les plugins les plus populaires qui correspondent à vos besoins et comparez leurs fonctionnalités et leurs effets sur la vitesse de la page.
  • Répertoriez et filtrez par programmation les plugins avant le chargement de la page.
  • Filtrez et désactivez par programmation les plugins inutiles avec un mu-plugin.
  • Filtrez et désactivez les plugins inutiles à l'aide d'un plugin.
  • Suivez les performances du site.

Plongeons profondément.

Désactiver sélectivement le chargement des plugins WordPress sur des pages/articles/sites spécifiques peut aider à accélérer votre site ! ??Click to Tweet

Trois règles générales à suivre lors du choix d'un plugin

Les règles générales suivantes peuvent être utiles lors du choix d'un plugin :

  • Installez uniquement des plugins bien codés de développeurs de confiance : considérez les installations actives, l'évaluation des utilisateurs, le support client, la fréquence de mise à jour et toute information utile provenant de la communauté WordPress.
  • Préférez les plugins évolutifs : comparez des plugins similaires en termes de performances, en utilisant des outils de développement de navigateur et/ou des services en ligne comme Google Pagespeed Insights, Pingdom et GTmetrix pour évaluer l'impact de chaque plugin sur le temps de chargement des pages.
  • N'installez pas de plugins inutiles : cela devrait être évident, mais il convient de mentionner que vous ne devriez jamais installer un plugin dont vous n'avez pas vraiment besoin pour des raisons de sécurité et de performances. Assurez-vous également de revoir vos plugins de temps en temps et de désinstaller ceux dont vous n'avez plus besoin et que vous n'utilisez plus.
Réputation du référentiel WordPress
WordPress Plugin Directory fournit des informations pertinentes que nous devons toujours prendre en compte lors du choix d'un plugin

Un exemple réel

Contact Form 7 est un excellent plugin qui crée et affiche des formulaires dans WordPress. Il fournit un exemple parfait pour nos besoins, car il inclut les fichiers suivants sur chaque page, même si la page ne contient pas de formulaire :

  • style.css
  • scripts.js
Panneau de réseau Chrome DevTools
Le panneau Chrome DevTools Network fournit des informations détaillées sur les requêtes réseau effectuées lors du chargement d'une page

Un plugin peut ralentir votre site Web, mais nous pouvons forcer WordPress à désactiver sélectivement les plugins en fonction de l'URL de la demande. Si vous êtes un développeur, lisez la section suivante où nous apprendrons à gérer les plugins par programmation et à créer un plugin mu qui filtre les plugins inutiles. Si vous n'êtes pas développeur, n'hésitez pas à vous rendre dans la section dédiée aux plugins qui permettent de filtrer et d'organiser les plugins.

Comment obtenir une liste de tous les plugins actifs par programme

Tout d'abord, vous pouvez obtenir une liste de tous les plugins actifs sur votre site WordPress avec un simple extrait de code PHP. Vous pouvez ajouter le code suivant soit dans un plugin personnalisé, soit dans l'éditeur d'un plugin WordPress gratuit comme Code Snippets. Si vous décidez d'utiliser votre plugin personnalisé, n'oubliez pas d'ajouter l'en-tête du plugin comme indiqué ci-dessous.

Plugins WordPress actifs
Plugins actifs dans la table wp_options

Chaque plugin actif est stocké dans wp_options tableau où options_name is active_plugins. Nous pouvons donc extraire la liste de ces plugins avec un simple get_option appeler. Voici le code :

 0 ){
		$plugins = "
    "; foreach ( $active_plugins as $plugin ) { $plugins .= "
  • " . $plugin . "
  • "; } $plugins .= "
"; } return $plugins; });

Modifiez les détails du plugin, puis enregistrez le active-plugins.php fichier et téléchargez-le sur votre /wp-content/plugins/ dossier. Créez un nouvel article de blog et incluez le [activeplugins] petit code. Il devrait maintenant afficher une liste de tous les plugins actifs.

Liste des plugins actifs
La liste des plugins actifs affiche le dossier et le nom de chaque plugin

Cela étant fait, nous pouvons aller plus loin et ajouter ou supprimer des plugins par programme en profitant de la option_active_plugins filtre. Ce filtre appartient au groupe de filtres option_$option_name, qui permet de filtrer n'importe quelle option après sa récupération dans la base de données. Étant donné que tous les plugins actifs sont stockés dans wp_options tableau où option_value is active_plugins, les option_active_plugins filter fournit un moyen d'activer ou de désactiver des plugins par programmation.

On peut donc activer un plugin par programmation. Supposons, par exemple, que vous souhaitiez activer le plugin ACF. Voici le code :

add_filter( 'option_active_plugins', function( $plugins ){

	$myplugin = "advanced-custom-fields/acf.php";

	if( !in_array( $myplugin, $plugins ) ){
		$plugins[] = $myplugin;
	}

	return $plugins;

} );

Dans cet exemple, nous supposons que le plugin a été installé et n'a pas encore été activé.

Le code ci-dessus ajoute simplement le plugin à la liste des plugins actifs sur chaque page de notre site Web. Pas très utile, mais vous obtenez le point.

De plus, le plugin doit se charger avant tout autre plugin, sinon notre code ne pourrait pas fonctionner comme prévu. Afin de prioriser la charge de notre plugin, nous devons ajouter notre script dans un plugin Must-use.

Comment créer un plugin indispensable pour désactiver les plugins par programmation

Nous allons construire un plugin Must use, qui est un plugin résidant dans un /wp-content sous-dossier et s'exécute avant tout plugin normal.

Malheureusement, dans cette situation, nous ne sommes pas autorisés à utiliser des balises conditionnelles, car Les balises de requête conditionnelle ne fonctionnent pas avant l'exécution de la requête. Avant cela, ils retournent toujours faux. Nous devons donc vérifier nos conditions autrement, par exemple en analysant l'URI de la demande et en vérifiant le chemin d'URL correspondant.

Ajoutez le code suivant au active-plugins.php fichier, puis déplacez-le vers /wp-content/mu-plugins:

$request_uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );

$is_admin = strpos( $request_uri, '/wp-admin/' );

if( false === $is_admin ){
	add_filter( 'option_active_plugins', function( $plugins ){

		global $request_uri;

		$is_contact_page = strpos( $request_uri, '/contact/' );

		$myplugin = "contact-form-7/wp-contact-form-7.php";

		$k = array_search( $myplugin, $plugins );

		if( false !== $k && false === $is_contact_page ){
			unset( $plugins[$k] );
		}

		return $plugins;

	} );
}

Plongeons dans ce code :

  • parse_url renvoie le chemin de l'URL demandée.
  • strpos trouve la position de la première occurrence de '/wp-admin/', et retourne false si la chaîne n'est pas trouvée. $is_admin variable stocke la valeur renvoyée.
  • La condition empêche l'exécution du filtre dans le panneau d'administration, afin que nous puissions accéder en toute sécurité aux pages de paramètres du plugin. Si l'URI de la requête ne contient pas '/wp-admin/', alors on invoque le option_active_plugins filtre.
  • Enfin, si le plugin courant n'est pas dans le tableau des plugins actifs, et que l'URI de la page courante ne contient pas /contact/, puis nous supprimons le plugin de $plugins.

Maintenant, enregistrez votre plugin et téléchargez-le sur votre /wp-content/mu-plugins/ dossier. Effacer le cache et ajoutez le [activeplugins] shortcode à plusieurs pages. Il ne doit apparaître dans la liste que sur le /contact/ Venez regardez des photos heureuses et inspirantes.

Pas de script CF7
Le fichier script.js a disparu de la liste des actifs de la page

Nous pouvons ensuite désactiver un tableau de plugins à la fois avec juste un peu de PHP supplémentaire.

$request_uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );

$is_admin = strpos( $request_uri, '/wp-admin/' );

if( false === $is_admin ){
	add_filter( 'option_active_plugins', function( $plugins ){

		global $request_uri;

		$is_contact_page = strpos( $request_uri, '/contact/' );

		$myplugins = array( 
			"contact-form-7/wp-contact-form-7.php", 
			"code-snippets/code-snippets.php",
			"query-monitor/query-monitor.php",
			"autoptimize/autoptimize.php" 
		);

		if( false === $is_contact_page ){
			$plugins = array_diff( $plugins, $myplugins );
		}

		return $plugins;

	} );
}

Dans cet exemple, nous avons d'abord défini un tableau de plugins à supprimer, puis nous les supprimons avec array_diff. Cette fonction « compare array1 à un ou plusieurs autres tableaux et renvoie les valeurs de array1 qui ne sont présentes dans aucun des autres tableaux ».

Vous pouvez télécharger le code complet de ce plugin depuis Gist.

Vous pouvez maintenant télécharger le plugin sur le plugins mu dossier et inspectez n'importe quelle page de votre site Web. Le mu-plugin peut être hautement personnalisé en ajoutant plus de conditions et en vérifiant plus d'URI, mais chaque condition doit être ajoutée manuellement au code, et à long terme, ce simple mu-plugin pourrait être difficile et fastidieux à maintenir.

Pour cette raison, vous voudrez peut-être consulter les plugins suivants.

Plugins qui filtrent les plugins

Comme alternative, nous pouvons examiner un certain nombre de bons plugins qui nous permettent d'ajouter des filtres qui peuvent être gérés à partir du panneau d'administration WordPress.

Filtre de chargement de plugin

Plugin Load Filter est une option gratuite pour les utilisateurs de WordPress qui ont besoin de filtrer les plugins sous plusieurs conditions.

Filtre de chargement de plugin
Plugin Load Filter permet de filtrer les plugins dans le panneau d'administration ainsi que dans les pages du site

Actuellement, il prend en charge les fonctionnalités suivantes :

  • Formats postaux
  • Types de publication personnalisés
  • Modules jetpack
  • Carte de contenu WP Embed
  • Filtre URL pour Expert (REST API / Heartbeat / AJAX / AMP / etc)

Une fois qu'un filtre a été activé, l'utilisateur administrateur peut spécifier où dans le site il doit être appliqué, comme indiqué dans l'image ci-dessous.

Onglet Activation du filtre de type de page
Une fois le filtre activé, les administrateurs du site peuvent définir leurs exceptions dans l'onglet Activation du filtre de type de page

Plugin Organizer

Plugin Organizer est un plugin populaire avec plus de 10,000 5 installations actives et une note impressionnante de 5 étoiles sur XNUMX. Il s'agit d'un plugin plus complet permettant aux administrateurs du site de :

  • Désactiver sélectivement les plugins par type de publication et URL de demande
  • Désactiver sélectivement les plugins par rôles d'utilisateur
  • Créer des groupes de plugins
  • Changer l'ordre de chargement du plugin
  • Autres caractéristiques
Page Paramètres de l'organisateur de plugins
Page Paramètres de l'organisateur de plugins

La page d'options Global Plugins fournit une fonction de glisser-déposer qui permet à l'utilisateur administrateur de désactiver globalement les plugins, empêchant WordPress d'exécuter un ou plusieurs plugins n'importe où sur le site, à moins que cela ne soit spécifié différemment pour des articles ou des pages uniques. La même fonctionnalité est disponible pour les pages de recherche et les types de publication.

L'organisateur de plugins désactive CF7 dans le monde
CF7 a été globalement désactivé

Le plugin ajoute une métabox dans l'écran d'édition de publication afin que l'administrateur soit autorisé à remplacer les paramètres globaux et de type de publication. Cette fonctionnalité peut également être activée pour les types de publication, en cochant l'élément correspondant dans l'écran Paramètres généraux. Une fonctionnalité intéressante est le message de débogage de l'organisateur de plugin, qui fournit à l'administrateur du site des informations utiles sur les plugins affectant chaque page du site.

Vous trouverez plus d'informations dans leur documentation.

Métabox personnalisée de l'organisateur de plugins sur la page Contact
Métabox personnalisée de Plugin Organizer sur la page de contact

Plugin Perfmatters

Une approche partiellement différente vient du plugin Perfmatters. Il s'agit d'une alternative premium qui permet à l'administrateur du site de charger de manière sélective les éléments de thème et de plug-in en fonction de l'URL ou du type de publication personnalisé. C'est un excellent outil pour l'optimisation des plugins et des thèmes. En fait, il est développé par un membre de l'équipe de Behmaster!

Aux prises avec des temps d'arrêt et des problèmes WordPress ? Behmaster est la solution d'hébergement conçue pour vous faire gagner du temps ! Découvrez nos fonctionnalités
Gestionnaire de scripts Perfmatters
Gestionnaire de scripts Perfmatters

Le plugin a une fonctionnalité appelée Script Manager, où tout est regroupés par nom de plugin ou de thème. Cela permet de désactiver très facilement un plugin entier à la fois, ou des fichiers CSS et JavaScript individuels qu'il contient.

Vous pouvez même désactiver les scripts avec regex. Ceci est particulièrement utile pour les sites qui ont une structure d'URL plus complexe en place ou des pages générées dynamiquement.

Ceci est très puissant et peut augmenter considérablement la vitesse de vos sites WordPress (en particulier votre page d'accueil). Quelques exemples de ce à quoi cela peut servir :

  • Les plugins de partage de réseaux sociaux ne doivent être chargés que sur vos publications. Vous pouvez facilement le désactiver partout et charger uniquement sur des types de publication, ou même des types de publication personnalisés.
  • Le populaire plugin Contact Form 7 se charge sur chaque page et publication. Vous pouvez facilement le désactiver partout en un clic et l'activer uniquement sur votre page de contact.
  • Si vous avez mis à niveau vers WordPress 5.0 mais que vous n'utilisez pas l'éditeur de blocs Gutenberg, vous utilisez peut-être toujours l'éditeur classique, il existe deux scripts frontaux supplémentaires qui sont ajoutés à l'ensemble du site et que vous pouvez désactiver : /wp-includes/css/dist/block-library/style.min.css et  /wp-includes/css/dist/block-library/theme.min.css

Vous pouvez voir à partir de cette revue de perfmatters, il réduit leurs temps de chargement totaux de 20.2 %. Rien que sur leur page d'accueil, ils ont pu réduire le nombre de requêtes HTTP de 46 à 30 ! La taille de la page est également passée de 506.3 Ko à 451.6 Ko.

Test de vitesse avec le plugin perfmatters
Test de vitesse avec le plugin perfmatters

Comment suivre les performances : les outils de développement du navigateur

Une étape fondamentale sur la route de l'optimisation des performances est la mesure du temps de chargement. Nous avons un certain nombre de plugins et d'outils en ligne que nous pouvons utiliser pour suivre les performances du site, comme Google Pagespeed Insights et Pingdom. Mais avant tout, nous pouvons utiliser les outils de développement du navigateur, qui fournissent de nombreuses informations utiles.

Chaque inspecteur de navigateur dispose d'un panneau Réseau qui affiche une liste des demandes de réseau et des informations associées. Suivez ces liens pour une documentation détaillée :

  • Outils de développement Firefox
  • Chrome DevTools
  • Outils de développement Microsoft Edge F12
  • Guide de l'inspecteur Web Safari

Dans une installation WordPress avec dix-huit plugins actifs, nous avons inspecté à plusieurs reprises une page de publication avec Firefox Dev Tools. Nous avons d'abord mesuré la vitesse de la page et répertorié les ressources demandées avant d'installer un plug-in de filtrage. L'image suivante montre la sortie de l'outil d'analyse des performances disponible dans le moniteur réseau Firefox.

Outil d'analyse des performances de Firefox
Outil d'analyse des performances de Firefox

Le moniteur réseau fournit les résultats suivants (cache vide) :

  • taille : 255.19 Ko
  • temps de chargement : 1.24 seconde
  • demandes : 12

Ensuite, nous avons installé Plugin Organizer pour empêcher WordPress d'exécuter le plugin CF7. Le camembert change un peu.

Outil d'analyse des performances de Firefox
Outil d'analyse des performances de Firefox

Maintenant, la page se charge plus rapidement (cache vide) :

  • taille : 104.21 Ko
  • temps de chargement : 0.80 seconde
  • demandes : 8

Ensuite, nous avons désactivé plusieurs plugins inutiles, et l'image suivante montre à quel point nous avons amélioré les performances de la page.

Outil d'analyse des performances de Firefox
Outil d'analyse des performances de Firefox

Après avoir désactivé tous les plug-ins inutiles, le cache de navigateur vide du moniteur réseau renvoie les données suivantes :

  • taille : 101.98 Ko
  • temps de chargement : 0.46 seconde
  • demandes : 8

Nous pouvons comparer les résultats de nos tests. La taille de la ressource a été réduite de 60.04 %, le le temps de chargement a été réduit de 1.24 seconde à 0.46 seconde, et le nombre de requêtes HTTP est passé de 12 à 8. Cela confirme que les plugins peuvent affecter les performances de la page, et que nous pouvons augmenter la vitesse de la page en tirant parti d'un filtre de plugin.

Résumé

Que vous construisiez vos propres scripts ou installiez des outils tiers, l'organisation et le filtrage des plugins sont quelque chose que vous devriez toujours considérer lorsqu'il s'agit d'optimiser les performances. N'oubliez pas que tous les plugins ne sont pas développés en pensant aux performances. Par conséquent, il peut être judicieux de prendre un certain temps et de déterminer quelles ressources de plug-in (CSS et JS) se chargent et où.

Mais apprendre à désactiver les plugins WordPress n'est qu'une des nombreuses autres techniques visant à augmenter la vitesse du site. Voici une liste d'autres guides et didacticiels utiles liés aux performances du site :

  • Comment accélérer WordPress (Guide ultime)
  • Guide du débutant pour l'optimisation de la vitesse de site Web
  • Comment réduire le TTFB pour améliorer les temps de chargement des pages WordPress
  • Comment diagnostiquer une utilisation élevée d'Admin-Ajax sur votre site WordPress
  • Comment nettoyer votre table wp_options et les données chargées automatiquement
  • Comment désactiver les plugins WordPress (pas d'accès à WP-Admin)

Articles Relatifs

0 Commentaires
Commentaires en ligne
Voir tous les commentaires
Retour à bouton en haut