web-dev-qa-db-fra.com

Intégrer des plugins dans des thèmes

Je ne trouvais pas de fil en discutant, alors commençons celui-ci.

Je travaille actuellement sur un thème plutôt élaboré pour la version 3.1+ et, par élaboration, je veux dire qu'en plus du style et des fonctionnalités front-end régulières, j'inclus des plugins au cœur du thème, à la fois pour le back-end et le front-end. . Donc, pour que cela reste un peu mieux organisé, j'ai divisé ceci en trois questions:

  1. L'intégration de plugins est-elle une pratique courante?
  2. Quelles sont les implications/complications de la mise à jour automatique du thème/des plugins?
  3. Quel serait le moyen le plus optimisé d’inclure chaque plugin sans rompre les fonctionnalités préexistantes?
3
OleVik

1)L'intégration de plugins est-elle une pratique courante?

Pas vraiment. Normalement, vous avez un thème qui offre une fonctionnalité de base. Vous étendez alors le thème avec des plugins à des fins spécifiques, telles que des contenus Twitter, des calendriers d'événements, etc.

Je pense que c'est logique. Je travaille actuellement sur un thème extrêmement mince qui comporte des plugins (approche POO) livrés sous forme de plugins, mais qui ne sont pas fournis. Ces plugins offrent des balises de modèle pour la pagination, la chapelure, ... même la boucle avec les formats de publication. J'aime l'idée d'offrir une fonctionnalité uniquement si l'utilisateur le souhaite vraiment. Par ex. le système de commentaires est rarement nécessaire si vous utilisez WP en tant que système de gestion de contenu pour une page d'accueil d'entreprise, alors pourquoi le thème devrait-il l'offrir? Un autre pro de cette approche: il suffit de désactiver le plugin et d’échanger les balises de modèle avec des éléments personnalisés si vous n’en avez pas besoin.

Dans cette approche, il est important de ne pas placer directement ces balises de modèle. Utilisez des crochets et des filtres encapsulés dans des fonctions pour que votre thème ne plante pas à cause d'appels de fonction non définis si vous désactivez un plug-in.

2)Quelles sont les implications/complications de la mise à jour automatique du thème/des plugins?

C'est quelque chose que je me pose actuellement. J'ai pensé à une routine massive qui vérifie les mises à jour à la fois sur le thème et sur les plugins, mais globalement: cela n'a aucun sens. C'est encore mieux si vous utilisez simplement le système de mise à jour intégré (ou utilisez une classe personnalisée si vous n'hébergez pas sur le dépôt officiel). Pourquoi: Vous ne mettez à jour que ce qui doit vraiment être mis à jour. Cela économise du temps et de l’énergie, et j’appellerais même cela le moyen "plus vert".

3)Quel serait le moyen le plus optimisé d’inclure chaque plugin sans rompre les fonctionnalités préexistantes?

Quelle est exactement la fonctionnalité préexistante dans votre cas?

Noms de fonction

WordPress a environ 2.500 fonctions qui sont lues sur une requête. Donc, interroger if ( function_exists('whatever') ) n'est jamais une bonne idée. Mieux vaut utiliser des noms uniques. @ Jan Fabry a eu une bonne idée: il préfixe toutes ses fonctions de réponse ici avec wpse et le numéro de Q - exemple: wpse14277_function_name(). Un numéro à 4 ou 5 chiffres associé à alphas restera probablement unique. Imaginez que vous ayez 50 fonctions personnalisées dans votre thème et que vous les interrogiez à raison de 2 500 par demande (vous pouvez faire le calcul vous-même) - ce n'est pas performant.
Edit:
Si vous voulez juste savoir si un plugin est actif, utilisez la balise is_plugin_active() conditionnel.

2
kaiser
  1. Oui, tout ce que vous construirez dans functions.php pourrait techniquement être réutilisé dans un plugin et distribué, la même chose est inversée.
  2. Vous devrez gérer l'aspect du versioning un peu différemment. Avec les plugins, chaque fois que vous effectuez une modification, vous devez mettre à jour uniquement ce plugin. Avec un thème, chaque petit changement mettra à jour le thème entier. En réalité, ce n'est peut-être pas un problème, car WordPress alertera les utilisateurs lorsqu'une mise à jour de thème est disponible de la même manière qu'il alerte les plug-ins.
  3. Assurez-vous de renommer les fonctions pour les rendre uniques, sinon vous risqueriez de tomber en panne lorsque les fonctions sont déclarées à nouveau. Je trouve plus facile de pré-suspendre la fonction avec votre nom de thème. plugin_function () deviendrait theme_plugin_function ().

Si vous trouvez que votre functions.php devient un peu lourd et désorganisé, vous pouvez créer plus de fichiers .php dans votre thème pour aider à organiser les choses, puis appelez ces fichiers dans functions.php via include_once ('path/filename.php') .

1
Drew Gourley

Pour être clair, parlez-vous d'inclure du code qui existe déjà en tant que plugins complets autonomes?

L'intégration de plugins est-elle une pratique courante?

L'intégration du code en général dans les thèmes est une pratique courante. Cependant, regrouper des quantités excessives de code et de fonctionnalités, généralement réalisées avec des plug-ins normaux, est considéré par certains comme une surcharge de fonctionnalités et une tentative de verrouillage des utilisateurs dans votre thème.

Quelles sont les implications/complications de la mise à jour automatique du thème/des plugins?

La mise à jour écrase tout avec la nouvelle version.

Quel serait le moyen le plus optimisé d’inclure chaque plugin sans rompre les fonctionnalités préexistantes?

Cela dépend énormément des spécificités de ce que fait le plugin, de la manière dont il est codé et s'il est nécessaire que votre thème fonctionne ou s'il s'agit simplement d'une fonctionnalité supplémentaire.

1
Rarst