DRY Développement du thème WordPress

Lorsque vous construisez un thème WordPress, il est utile de prendre un peu de temps pour identifier les endroits où vous pouvez éviter la répétition de code. Cela vous donne pas mal d'avantages:

  • Vous n'aurez qu'à écrire le code une fois, ce qui vous rendra plus efficace.
  • Si vous modifiez le code ultérieurement, il vous suffira de le faire une fois..
  • Toute autre personne travaillant avec votre thème ne sera pas déroutée par plusieurs itérations du même morceau de code.
  • Votre thème aura moins de code, ce qui peut offrir des avantages en termes de performances.

D'après mon expérience, le plus important de ces points est le deuxième: lorsque je dois éditer des thèmes pour une raison quelconque, la tâche est beaucoup plus facile si chaque élément de code n'y figure qu'une seule fois..

Dans ce didacticiel, je vais vous montrer quelques-unes des façons dont vous pouvez adopter le principe "Ne vous répétez pas, ou DRY" dans le développement de votre thème, vous rendant plus efficace et moins stressé au cours du processus.. 

Quoi ne pas aimer?

1. Utilisation de cadres et de thèmes de démarrage

Utiliser un framework, que ce soit un tiers ou celui que vous développez vous-même, signifie qu'une grande partie du code dont vous avez besoin sera déjà là pour vous lorsque vous commencerez, et que vous ne vous retrouverez plus en train d'écrire le même code. encore (ou même pas du tout).

Quelle que soit la quantité de code dont vous avez besoin dans votre framework, vous préférerez peut-être utiliser un framework barebone auquel vous ajouterez ensuite, ou un plus complet à partir duquel vous sélectionnerez des fonctionnalités pour votre projet..

Outre les frameworks, de plus en plus de thèmes de démarrage sont disponibles pour vous aider à accélérer le codage. Actuellement, le thème le plus utilisé est le thème _s, qui vous donne le strict nécessaire pour créer rapidement des thèmes WordPress..

Vous pouvez également préférer créer vos propres thèmes de démarrage, y compris le code de base que vous utilisez maintes et maintes fois dans les projets. Vous pouvez en créer un simple, auquel vous ajouterez plusieurs versions différentes pour différents types de projet..

2. Utilisation de parties de gabarit

Vous obtiendrez le meilleur rendement en termes de thématisation à sec si vous utilisez des modèles. Les plus évidentes sont les fichiers d'en-tête, de pied de page et de barre latérale, mais vous pouvez également utiliser des fichiers en boucle et d'autres parties de modèle pour rendre votre code plus efficace..

L'en-tête, la barre latérale et le pied de page

J'espère que vous n'avez pas besoin de moi pour vous dire ceci: vous devriez TOUJOURS utiliser des fichiers de modèle séparés pour votre en-tête (header.php), barre latérale (sidebar.php) et le pied de page (footer.php). Vous les appelez ensuite dans chacun de vos fichiers de modèle à l'aide des balises de modèle suivantes:

  • get_header ()
  • get_sidebar ()
  • get_footer ()

Mais vous n'aviez pas besoin de moi pour vous dire cela, alors passons à une utilisation plus avancée des parties de gabarit.

En-têtes, barres latérales ou pieds de page multiples

Parfois, vous voudrez peut-être utiliser un en-tête, une barre latérale ou un pied de page différents pour différentes zones de votre site. Vous pouvez le faire facilement en créant plusieurs fichiers.

Par exemple, supposons que vous souhaitiez utiliser une barre latérale différente sur vos pages d'archive. Vous créez un fichier pour cette barre latérale appelé sidebar-archive.php. Dans ton archive.php fichier modèle, vous remplaceriez alors le standard get_sidebar () tag avec get_sidebar ('archive').

Cela vous donne la possibilité d'avoir une barre latérale supplémentaire, que vous pouvez ensuite utiliser dans plusieurs fichiers de modèle. Par exemple, vous souhaiterez peut-être l'utiliser dans les modèles d'archive pour des types de publication spécifiques. Donc, si vous aviez un type de message appelé bouton, vous créer un modèle d'archive pour cela appelé archive-button.php, et en ce que vous utiliseriez le get_sidebar ('archive') étiquette.

Cette approche présente certains inconvénients: si votre sidebar.php et sidebar-archive.php les fichiers ont beaucoup de code répétitif, votre thème ne suit pas assez le principe DRY. Si tel est le cas, vous pouvez choisir d'utiliser des balises conditionnelles, que je couvrirai plus loin dans ce tutoriel..

Autres pièces de modèle

Outre les éléments de modèle pour l'en-tête, le pied de page et la barre latérale, vous pouvez également créer d'autres éléments de modèle. Vous appelez ensuite ces pièces de modèle à l’aide du bouton get_template_part () étiquette.

L'utilisation la plus courante de ceci est pour la boucle. La boucle est un morceau de code souvent répété dans plusieurs modèles. Il est donc logique de la supprimer de chacun de ces modèles et de la placer dans un fichier qui lui est propre..

Pour ce faire, vous créez un fichier appelé loop.php avec le code pour votre boucle et ensuite vous l'appelez en utilisant get_template_part ('boucle'). Cela extrait efficacement tout le code de votre fichier de boucle dans votre modèle.

Vous pouvez aller plus loin avec plusieurs boucles. Par exemple, si vous avez une boucle légèrement différente pour les archives, vous devez créer un fichier appelé loop-archive.php et appelez en utilisant get_template_part ('boucle', 'archive'). Simple!

3. Utilisation des balises conditionnelles

Il est parfois plus efficace d’utiliser des balises conditionnelles à la place de fichiers de modèle séparés. WordPress est fourni avec un ensemble de balises conditionnelles que vous pouvez utiliser pour vérifier quel type de contenu est affiché à un moment donné ou quel modèle de page est utilisé. Vous pouvez donc les utiliser pour vérifier si un modèle spécifique est utilisé, puis ajouter du code, le cas échéant. Cela vous évite de créer un fichier modèle supplémentaire si vos fichiers de modèle contiennent beaucoup de code dupliqué..

Je vais illustrer cela avec un exemple. Disons que vous avez une barre latérale avec une zone de widget enregistrée. Sur les pages individuelles d'un type d'article donné, vous souhaitez ajouter une deuxième zone de widget. Cela peut être utile si vous souhaitez répertorier d'autres publications de ce type dans un widget, par exemple.

Vous pouvez créer un fichier séparé appelé sidebar-xxx.php, où xxx est votre type de message, puis appelez-le dans le fichier modèle pour votre type de message. Ou vous pouvez simplement utiliser un fichier de barre latérale avec une balise conditionnelle pour ajouter la zone de widget supplémentaire comme suit:

Dans ton sidebar.php fichier, vous aurez déjà une zone de widget enregistrée, qui pourrait ressembler à ceci:

    

Cela affichera la zone du widget de la barre latérale si elle a été remplie avec des widgets.

Vous pouvez ensuite ajouter une deuxième barre latérale en utilisant le bouton is_singular () balise conditionnelle:

if (is_singular ('xxx') && is_active_sidebar ('xxx-sidebar-widget-area')) ?>  

Ceci vérifie si la zone du widget est renseignée de la même manière que le premier exemple, mais ajoute une vérification supplémentaire à celle-ci. si déclaration: is_singular ('xxx'). Ceci vérifie si le site affiche actuellement une seule page pour le xxx Type de poste. Si tel est le cas et que la zone du widget est remplie, elle sera affichée..

4. Transformer un code répétitif en une fonction

Si votre code doit être répété à plusieurs reprises sur le site et qu'il ne se prête pas à un fichier d'inclusion, une autre solution consiste à le mettre dans une fonction, puis d'appeler cette fonction où que vous soyez dans votre modèle. veux que le code apparaisse.

Par exemple, vous pourriez avoir du code pour afficher un appel à la zone d'action:

// Le contenu du CTA va ici

Répéter le même code à plusieurs endroits de votre thème serait une mauvaise pratique, car cela ajouterait du code supplémentaire et rendrait très difficile la modification précise du code si vous en aviez besoin à l'avenir. Au lieu de cela, vous pouvez l'envelopper dans une fonction, puis la placer aux endroits appropriés de votre thème..

Votre fonction ressemblerait à ceci:

fonction wptp_cta () ?> 
// Le contenu du CTA va ici

Ensuite, si vous aviez besoin que votre zone d'appel à l'action apparaisse à des endroits de votre thème, tels que les barres latérales ou les pieds de page, vous n'avez qu'à écrire la fonction dans le fichier de modèle approprié:

wptp_cta ();

Le grand avantage de cela est que si vous voulez changer l'appel à l'action à l'avenir, il vous suffit de changer la fonction une fois et le changement sera répercuté partout où vous l'avez appelée dans votre thème..

5. Accrocher le code aux crochets d’action

La prochaine étape dans le développement de thèmes DRY consiste à utiliser des points d’action dans votre thème..

Vous créez un crochet d’action à l’aide du bouton do_action () fonction, puis vous attachez des fonctions à ce crochet en utilisant add_action ().

Cela vous donne beaucoup plus de flexibilité dans la façon dont vous utilisez votre code récurrent et vous permet de spécifier non seulement où il apparaîtra dans votre thème, mais dans quelles circonstances, en utilisant une combinaison de fonctions et de balises conditionnelles..

Cela signifie également que si vous créez des thèmes enfants en utilisant votre thème d'origine en tant que thème parent, vous pouvez associer des fonctions de votre thème enfant à la fonction du thème parent..

Je reviens à mon exemple d'encadré. Au lieu de coder la zone du widget dans mon sidebar.php fichier, je viens d’ajouter une action, en lui attribuant un nom unique:

do_action ('wptp_sidebar');

Cela crée un crochet d’action dans mon thème, auquel je peux attacher des fonctions personnalisées..

Dans mon functions.php fichier, j’accroche ensuite le code de la barre latérale standard à cette action comme suit:

fonction wptp_sidebar_default () if (is_active_sidebar ('sidebar-widget-area'))) ?>  

J'ai utilisé add_action () avec deux paramètres: wptp_sidebar, le nom de l'hameçon, et wptp_sidebar_default, le nom de la fonction.

Voilà donc la barre latérale standard ajoutée à mon thème. Pour ajouter la barre latérale à mon type d'article, j'ajoute une deuxième fonction à mon functions.php fichier et accrochez-le au même crochet d’action:

function wptp_xxx_sidebar () if (is_singular ('xxx') && is_active_sidebar ('xxx-sidebar-widget-area')) ?>  

Cela enveloppe ma deuxième barre latérale dans une fonction, puis déclenche cette fonction sur le wptp_sidebar crochet d'action aussi bien. Quelques points à noter:

  • La balise conditionnelle va dans la fonction et non avec le add_action une fonction.
  • J'ai ajouté une priorité de 15 à ma deuxième fonction. Comme la priorité par défaut (qui aura été attribuée à ma première fonction) est 10, cela signifie que WordPress activera cette deuxième fonction après celle-ci. xxx l'encadré apparaîtra sous celui par défaut.

Résumé

Les idées que j'ai évoquées ci-dessus ne constituent pas une liste exhaustive des méthodes permettant d'adopter le principe DRY lors du développement de thèmes WordPress, mais elles offrent une introduction aux méthodes les plus efficaces que vous pouvez utiliser..

Si vous voulez vous assurer que vos thèmes sont aussi efficaces que possible, je vous conseillerais de prendre le temps de planifier la structure de votre thème avant de commencer à écrire du code. Identifiez où le code sera dupliqué et quelle approche serait la meilleure pour éviter la répétition du code et des efforts. Travaillez à travers les idées ci-dessus, en utilisant celle qui vous fera économiser le plus de temps et de code. Cela vous aidera à développer le thème plus à l'avenir.