J'aimerais avoir des avis sur les meilleures pratiques pour développer des plugins WordPress qui fournissent une intégration de thème.
Afin de donner un sens à ma question, permettez-moi de commencer par un exemple hypothétique d'un scénario qui m'intéresse. Imaginez que je crée un plugin appelé "Discographie". La discographie enregistre trois types de messages personnalisés: "Bandes", "Albums" et "Pistes". Le plugin fournit également des métadonnées qui fournissent des détails pour chaque type de publication, ainsi que des taxonomies personnalisées pour organiser chaque type de publication. Ces types de messages sont liés avec le plugin Posts 2 Posts . Au sein de l'administrateur, l'utilisateur peut ajouter de nouveaux groupes, qui peuvent être associés à des albums, qui à leur tour sont associés à des pistes, qui auront toutes beaucoup d'autres données ajoutées via des métadonnées et des taxonomies.
Maintenant, je ne veux pas que ce plugin configure simplement un administrateur pour que les utilisateurs entrent ces informations; Je voudrais qu'il fournisse des affichages par défaut pour les données. Un utilisateur / développeur plus avancé serait bien d'avoir seulement cet administrateur. Il serait assez facile pour elle de saisir ces données et de les utiliser dans le thème; cependant, sans certaines vues par défaut, ce plugin serait inutile pour la plupart des utilisateurs. Pour cet exemple, vous pouvez afficher quelque chose comme (les parenthèses indiquent la façon dont les informations peuvent être affichées dans l'ordre de la hiérarchie des modèles):
- Bandes (single-prefix-band.php, single.php, index.php, shortcode)
- Albums (single-prefix-album.php, single.php, index.php, shortcode)
- Pistes (single-prefix-track.php, single.php, index.php, shortcode)
- Liste des bandes (template-band-list.php, page-band-list.php, page- {id} .php, page.php, index.php, shortcode)
- Liste d'albums (template-album-list.php, page-album-listing.php, page- {id} .php, page.php, index.php, shortcode)
- Chronologie de l'album (template-album-timeline.php, page-album-timeline.php, page- {id} .php, page.php, index.php, shortcode)
Il est important qu'il y ait une présentation par défaut pour ces types de publication car les fichiers de modèle par défaut n'afficheraient pas toutes les informations nécessaires pour chacun des types de publication. Par exemple, le thème Twenty Eleven, par défaut, afficherait simplement le nom, les catégories, la description et la date de publication d'un album. Pas très utile pour un album. Je voudrais fournir un modèle de publication unique qui intègre le groupe, la date de sortie, le label, les versions d'album, les pistes, etc. En tant que développeur de plugins, je pense que ce serait important à fournir. Je sais que le modèle ne fonctionnerait pas pour chaque thème, mais il devrait y avoir une valeur par défaut qui peut être davantage intégrée au thème de l'utilisateur.
Encore une fois, je suis curieux de savoir quelle est la meilleure façon de gérer cette situation? Je pense que vous pourriez faire l'une des choses suivantes.
Shortcodes
Les shortcodes peuvent être utilisés comme un moyen très flexible et convivial pour permettre aux non-développeurs d'ajouter des groupes, des albums, des pistes, des listes de groupes, etc. partout dans le site. Il serait utile de présenter des bandes sur des pages spécifiques ou de créer des pages distinctes pour chaque bande (pas très efficace, mais certains utilisateurs abordent les choses de cette façon). Le shortcode générerait du HTML, qui serait lié à un fichier CSS fourni qui fournirait une belle vue par défaut des données souhaitées. Tout serait contenu dans les fichiers du plugin et rien n'aurait besoin d'être fait avec le thème.
Fichiers de modèle
Le plugin peut également être livré avec des fichiers de modèle. Les fichiers de modèle peuvent être marqués et stylisés pour une belle vue par défaut. Vous pouvez fournir des instructions à votre utilisateur pour déplacer les fichiers vers le dossier du thème afin que le thème trouve les bons modèles lorsque les types de publication sont affichés. Vous pourriez même aller jusqu'à fournir une interface pour permettre à l'utilisateur de déplacer les fichiers en un seul clic (remarque: je ne créerais pas de fichiers dans le dossier de thème de l'utilisateur lors de l'activation, car ajouter des fichiers à leur thème sans les initier est mauvais) .
Vous pouvez également utiliser des filtres pour utiliser ces fichiers sans les déplacer hors du dossier du plugin, en gardant tout autonome. J'ai vu les filtres "template_include" et "{$ type} _template" utilisés à cet effet. En fait, vous pouvez utiliser des modèles du dossier des thèmes et s'ils ne sont pas présents, vous pouvez vous rabattre sur ces filtres pour fournir les vues par défaut.
La question
J'aime savoir ce que les autres pensent être les meilleures pratiques pour ces situations, si les idées présentées sont problématiques de quelque manière que ce soit, et toutes les alternatives que je n'ai pas incluses.
Je vous remercie!