Comment personnaliser la vérification de thème pour la validation de thèmes WordPress

La sécurité et la cohérence font partie de nos principales préoccupations lors de l'utilisation de bibliothèques, de frameworks et de plugins tiers. Nous rencontrons le même problème en utilisant des thèmes et des plugins WordPress gratuits et commerciaux.

WordPress Codex fournit un ensemble de directives et de règles pour le développement de thèmes. Afin de soumettre des thèmes au répertoire de thèmes WordPress, vous devez vous conformer à ces instructions. Mais il existe des centaines de thèmes gratuits et commerciaux qui pourraient ne pas être développés conformément à ces directives..

Fondamentalement, nous devons vérifier si un thème correspond au moins à l'ensemble donné de directives et de règles. Theme Check est un plugin WordPress gratuit développé pour valider les thèmes WordPress.


Le thème peut-il tout valider??

Il ne peut certainement pas, du moins, avec ses fonctionnalités par défaut. Nous allons donc voir ici comment utiliser les contrôles existants et ajouter nos propres règles de validation des thèmes WordPress..


Importance du plugin de vérification de thème

Theme Check propose environ 40 tests intégrés pour valider votre thème à la fois sur le tableau de bord frontal et le tableau de bord administratif. Fondamentalement, ces vérifications contiendront les validations nécessaires pour éviter les problèmes de sécurité et pour faire correspondre les fonctionnalités de thème aux directives de développement de thème..

En tant que développeurs de thèmes ou utilisateurs de thèmes tiers, nous devrions utiliser un tel outil pour nous assurer que nos thèmes sont conformes aux normes..

L'importance majeure du vérificateur de thèmes réside dans sa capacité à modifier le comportement existant ou à ajouter un nouveau comportement via des plugins enfichables. Tout au long de cet article, nous examinerons son architecture et les possibilités d’extension du plugin pour l’utiliser comme bibliothèque de vérification de thèmes complète..


Comment utiliser le thème de vérification

Je suppose que la plupart d’entre vous ont déjà utilisé ce plugin dans vos tâches de développement WordPress. Les nouveaux utilisateurs de ce plugin peuvent en obtenir une copie à partir du référentiel de plugins WordPress à l'adresse http://wordpress.org/extend/plugins/theme-check/..

Une fois installé et activé, vous obtiendrez un sous-menu appelé Vérification du thème sous le Apparence menu. Vous y trouverez une liste déroulante contenant tous les thèmes disponibles sur votre installation WordPress. Vous pouvez sélectionner un thème et cliquer sur le bouton Vérifie ça bouton pour lancer la validation du thème. Une fois le processus terminé, vous obtenez un écran comme celui-ci..


Assurez-vous d'activer le WP_DEBUG option dans le wp-config.php déposer dans VRAI avant de commencer à valider des thèmes.

Les résultats de la vérification du thème contiendront tous les types d’erreurs trouvées dans votre thème dans différents types d’erreur tels que CONSEILLÉ, CHAMPS OBLIGATOIRES, ATTENTION, etc. N'oubliez pas que toutes ces validations sont effectuées sur la base des normes de révision du thème WordPress..

La puissance réelle de Theme Check provient de l'extension du plugin avec des contrôles de validation personnalisés. Alors creusons dans le code pour savoir comment cela fonctionne et comment nous pouvons l'étendre avec nos propres contrôles.


Comprendre l'interface de vérification de thème

Thème Check offre une interface bien définie et simple pour créer des contrôles. Toutes les vérifications existantes ainsi que les nouvelles vérifications doivent être implémentées dans cette interface pour que tout fonctionne bien. Le code suivant contenu dans le checkbase.php fichier montre l'interface commune pour les vérifications de thème.

 // interface que toutes les vérifications doivent implémenter l'interface themecheck // doit renvoyer true pour vérification de la fonction publique bonne / okay / acceptable, false pour vérification de la fonction publique mauvaise / non acceptable / inacceptable ($ php_files, $ css_files, $ other_files); // devrait renvoyer un tableau de chaînes expliquant tous les problèmes rencontrés. public function getError (); 

Fondamentalement, il contient deux fonctions permettant de vérifier le thème et de fournir des erreurs. Tout le contenu du fichier de votre thème sera compressé en trois variables principales sous forme de chaînes. Ces variables sont ensuite transmises à la fonction de contrôle de chaque classe de contrôle par le plugin..

À l'intérieur de vérifier fonction, nous devons implémenter les validations et renvoyer les erreurs si la vérification se termine en échec. Puis le getError La fonction sera appelée pour ajouter les messages d'erreur dans la page de résultats de la vérification du thème..


Introduction au processus de vérification de thème

Je pense qu'il est important de comprendre le processus d'initialisation de Thème Check afin de comprendre son fonctionnement et les sections importantes sur lesquelles nous devons nous concentrer avant d'étendre la fonctionnalité du plugin..

Une fois que nous avons sélectionné le thème et cliqué sur le bouton «Check it», le plug-in recherchera tous les fichiers du thème sélectionné à l'aide de PHP. RecursiveDirectoryIterator et assigne tout le contenu de ces fichiers dans une variable chaîne.

Ensuite, le contenu du fichier sera séparé en trois variables, une pour les fichiers PHP, les fichiers CSS et les autres fichiers. Ensuite, il lance le processus d’exécution des vérifications de thèmes, ce qui sera la partie la plus importante pour nous en tant que développeurs..

Considérez le code suivant pour le processus d’exécution initial après le chargement des variables de fichier..

 // charge tous les chèques dans le répertoire des chèques $ dir = 'chèques'; foreach (glob (dirname (__ FILE__). "/$dirBuch/*.php") en tant que $ fichier) include $ fichier;  do_action ('themecheck_checks_loaded'); function run_themechecks ($ php, $ css, $ autre) global $ themechecks; $ pass = true; foreach ($ chèques comme $ chèque) if ($ instance de chèque) $ pass = $ pass & $ chèque-> chèque ($ php, $ css, $ autre);  return $ pass; 

Explication du code

  • Tous les contrôles de thème sont stockés dans le chèques répertoire du plugin et chacun d’entre eux est inclus en recherchant les fichiers PHP dans le répertoire.
  • Une fois que toutes les vérifications de thème sont chargées, le plug-in exécute une action personnalisée appelée themecheck_checks_loaded. Cette action constitue la partie la plus importante du processus d'extension.
  • Ensuite, le système commence à exécuter les vérifications de thème via le run_themechecks fonction, qui prend les fichiers PHP, CSS et autres comme variables.
  • Enfin, la fonction de vérification de chacune des vérifications de thème est chargée dans la liste globale. $ chèques variable qui sera exécutée pour compléter le processus de vérification.

Personnalisation des contrôles de thème existants

La plupart des vérifications de thèmes sont basées sur la correspondance d'expressions régulières ou sur la correspondance de positions spécifiques dans des chaînes. Notre première exigence est de savoir comment modifier le comportement des contrôles existants. Alors jetons un coup d'oeil à la IncludeCheck classe, qui valide la manière dont les fichiers doivent être inclus dans un thème.

 La classe IncludeCheck implémente themecheck protected $ error = array (); vérification de la fonction ($ php_files, $ css_files, $ other_files) $ ret = true; $ checks = array ('/ (? __ ('Le thème semble utiliser include ou require. S'ils sont utilisés pour inclure des sections distinctes d'un modèle à partir de fichiers indépendants, get_template_part () devrait être utilisé à la place. ',' themecheck ')); foreach ($ php_files as $ php_key => $ phpfile) foreach ($ vérifie que $ clé => $ check) checkcount (); if (preg_match ($ key, $ phpfile, $ matches)) $ filename = tc_filename ($ php_key); $ error = '/ (?erreur [] = sprintf (__ ('INFO: % 1 $ s % 2 $ s% 3 $ s ',' themecheck '), $ nom du fichier, $ check, $ grep);  return $ ret;  function getError () return $ this-> error;  $ themechecks [] = new IncludeCheck;

Explication du code

  • Toutes les vérifications de thème ont un tableau protégé pour stocker les erreurs.
  • Dans la fonction de contrôle, nous pouvons inclure un nombre quelconque de contrôles dans un tableau. Ici nous n'avons qu'un chèque.
  • La plupart des vérifications de thème seront exécutées en faisant correspondre les expressions régulières. Les clés du tableau de vérifications seront donc des expressions régulières. La valeur de la clé respective doit contenir le message d'erreur à afficher en cas d'échec.
  • Ensuite, nous devons choisir un type de fichier spécifique et parcourir chaque vérification du tableau lors de la mise à jour du fichier global. nombre de contrôle variable.
  • Ensuite, nous effectuons la correspondance d'expression régulière et attribuons les erreurs au tableau d'erreurs global en cas d'échec..
  • Ensuite, nous renvoyons le statut du chèque en tant que succès ou échec. En fonction de l'état, le plugin récupérera les erreurs nécessaires pour s'afficher sur la page de résultats..
  • Enfin, nous initialisons l’objet de la classe de vérification de thème et l’affectons à la classe globale. $ chèques tableau à la fin du fichier.

Supposons que vous souhaitiez améliorer une vérification de thème existante en ajoutant de nouvelles règles ou en modifiant des règles existantes. Tout ce que vous avez à faire est d’ajouter un nouvel élément ou de modifier les expressions régulières des éléments existants dans le tableau de contrôles..

Vous devez maintenant bien comprendre le fonctionnement des vérifications de thèmes et la manière dont les erreurs sont générées en cas d'échec. Passons maintenant à la partie la plus importante de la création de nos propres vérifications personnalisées sans affecter le plugin principal..


Extension du thème de vérification avec plugin enfichable

Construire de nouvelles vérifications de thème peut être aussi simple que de mettre en œuvre l'interface avec une nouvelle classe de vérification de thème et de placer les fichiers dans le répertoire des vérifications du plug-in. Mais changer la fonctionnalité principale n'est pas une méthode recommandée car vous perdrez toujours vos fichiers lors des mises à jour de plugins..

La meilleure pratique consiste à étendre les plugins en utilisant les options possibles sans affecter le code principal. Les développeurs de Theme Check ont ​​activé l’option d’extension de la fonctionnalité à l’aide d’un crochet d’action appelé themecheck_checks_loaded.

Ce crochet d'action sera exécuté une fois que toutes les vérifications de thème auront été chargées. Par conséquent, nous aurons accès à la variable de vérification du thème global dans les plugins enfichables. Il est maintenant temps de commencer par créer un plugin personnalisé.


Suppression des contrôles existants

Parfois, nous pouvons avoir besoin de désactiver certaines vérifications de thèmes afin de répondre aux exigences de nos propres thèmes. Vous devez supprimer le fichier ou commenter le code d'initialisation pour les désactiver dans un scénario normal. Mais avec la puissance d'un plugin enfichable, nous pouvons les activer ou les désactiver à tout moment sans affecter le noyau. Voyons comment nous pouvons désactiver les vérifications de thème à l'aide d'un plugin.

 function custom_themecheck_checks_loaded () global $ themechecks; $ checks_to_disable = array ("Obsolète", "Screenshot_Checks"); foreach ($ les vérifications en tant que $ keyindex => $ check) if ($ vérifie instance de la vérification) $ check_class = get_class ($ check); if (in_array ($ check_class, $ checks_to_disable)) unset ($ themechecks [$ keyindex]);  add_action ('themecheck_checks_loaded', 'custom_themecheck_checks_loaded');

Nous pouvons mettre en œuvre le themecheck_checks_loaded action du plugin Theme Check, dans nos propres plugins. Nous avons là accès à tous les contrôles de thèmes chargés. Nous pouvons définir un tableau contenant les noms de classe des vérifications de thème que nous voulons désactiver. Enfin, nous désactivons les vérifications contenues dans le tableau désactivé et la vérification du thème sera exécutée sans ces validations..

Nous sommes autorisés à modifier facilement les vérifications de thème existantes en utilisant notre propre plugin. Mettre en œuvre une vérification de thème à partir de zéro est l’intention principale de ce tutoriel. Voyons maintenant comment créer un nouveau contrôle de thème.


Création de nouveaux contrôles de thème

Il peut y avoir des centaines de scénarios pour la mise en œuvre de vérifications de thèmes personnalisés. Valider les crochets d’action personnalisés est l’un de mes préférés et je vais utiliser le code pour des explications..

En gros, j'aimerais que certains thèmes comportent des points d'ancrage personnalisés pour ajouter de nouvelles fonctionnalités. Le thème thématique est un bon exemple d'utilisation efficace des points d'ancrage personnalisés dans les thèmes. Commençons par implémenter une vérification de thème personnalisée.

Dans le dossier du plugin personnalisé, créez une nouvelle classe PHP et implémentez l'interface avec les détails décrits dans les sections précédentes. Le moyen le plus simple consiste à copier une vérification de thème existante et à modifier la fonction de vérification et l'initialisation. Considérez le code suivant pour l'implémentation de la vérification des points d'ancrage d'actions personnalisés.

  __ ('Voir: ',' themecheck '),' do_action \ (\ s? ("| \ ') sample_action2 (" | \') \ s? \) '=> __ (' Voir: ',' themecheck ')); foreach ($ chèques en tant que $ clé => $ chèque) checkcount (); if (! preg_match ('/'. $ key. '/ i', $ php)) if ($ key === 'do_action \ (\ s? ("| \') sample_action1 (" | \ ') \ "\ s? \) ') $ key = __ (' do_action (\ 'sample_action1 \') ',' themechek ');  if ($ key === 'do_action \ (\ s? ("| \') sample_action2 (" | \ ') \ s? \)') $ key = __ ('do_action (\' sample_action2 \ ') ',' themechek ');  $ key = ltrim (trim (trim ($ key, '('), '\\'))); $ this-> error [] = sprintf (__ ('CHAMPS OBLIGATOIRES: N'a pas pu trouver % 1 $ s. % 2 $ s ',' themecheck '), $ key, $ check); $ ret = false;  return $ ret;  function getError () return $ this-> error;  $ themechecks [] = new CustomActions; ?>

Dans cette vérification personnalisée, j’ai inclus des expressions régulières pour valider deux points d’accès personnalisés appelés sample_action1 et sample_action2. Une fois la correspondance trouvée, nous définissons une clé conviviale à afficher pour l'utilisateur à la place des expressions régulières d'origine. Si vous le comparez aux contrôles existants, vous remarquerez que seules les expressions qui ont été modifiées et les messages de la fonction de contrôle ont été modifiés..

Enfin, nous pouvons ajouter de nouvelles vérifications en utilisant une autre implémentation de l'action, comme indiqué dans le code suivant..

 function custom_new_themecheck_loadeder () global $ themechecks; include_once 'custom_actions.php';  add_action ('themecheck_checks_loaded', 'custom_new_themecheck_loadeder');

Maintenant, vous pouvez intégrer vos propres contrôles de thème dans le plugin Theme Check..


Quand utiliser le thème de vérification

La vérification de thème est conçue pour valider les thèmes par rapport aux directives de développement de thème WordPress. Par conséquent, il se concentrera principalement sur les préoccupations de sécurité et le maintien de la cohérence du format et des fonctionnalités.

Nous pouvons utiliser ce plugin sous un angle différent pour ajouter des fonctionnalités, comme indiqué dans la dernière section. Si vous êtes un expert des expressions régulières, il est possible de créer des vérifications de thème avancées avec cet outil incroyable..

C'est à vous de décider quand utiliser les contrôles de thème personnalisés. Bien sûr, cela est plus important pour les développeurs de thèmes que pour les utilisateurs de thèmes WordPress.

Je peux penser à deux scénarios principaux où les vérifications de thèmes personnalisés peuvent devenir utiles.

Maintenir un cadre de base

Je ne pense pas qu'un développeur développera chaque thème WordPress à partir de zéro. Le plus souvent, les développeurs conservent leur propre framework de thèmes de base et construisent divers modèles par dessus..

Les vérifications de thèmes personnalisés seront donc très utiles pour conserver la cohérence d'un framework de base sur tous les thèmes. Vous pouvez valider des éléments tels que les formats d'image, les tailles, les codes courts, les actions, etc. à l'intérieur de votre propre cadre..

Développer des thèmes au-delà des blogs

Généralement, la plupart des thèmes WordPress sont conçus pour correspondre à un type de thème de blogging. WordPress offre des points d'ancrage intégrés pour les fonctionnalités de blog et nous n'aurons donc aucune difficulté à les étendre..

Cependant, il peut arriver que vous développiez des thèmes pour des applications telles que des sites d'affichage d'offres d'emploi, des paniers d'achat, des systèmes de gestion d'événements, etc. Ces thèmes ont des sections et des fonctionnalités complètement différentes de celles des blogs. WordPress n'offre pas de fonctionnalités intégrées pour de tels thèmes. Par conséquent, il serait judicieux de mettre en œuvre des points d'ancrage d'action dans de tels thèmes et de les valider à l'aide de la vérification du thème..


Conclusion

J'espère que vous avez compris l'importance de la vérification des thèmes et comment nous pouvons l'utiliser pour maintenir la cohérence entre nos thèmes..

Je voudrais savoir si vous avez utilisé ce plugin et quel type de vérification de thème personnalisé vous avez mis en place pour étendre ses fonctionnalités.

N'hésitez pas à partager vos suggestions et vos questions dans la section commentaires ci-dessous.