Garder les fonctionnalités séparées de la présentation est une pratique recommandée pour le développement de thèmes WordPress. Dans cet article, vous apprendrez comment faire exactement cela, en fournissant à vos utilisateurs un plugin unique pour vos thèmes..
Nous vendons des thèmes WordPress sur ThemeForest depuis plus de quatre ans et avons appris de nombreuses choses qui nous ont permis de réussir sur le marché. L'un des aspects clés d'un développement de thème réussi est la «logique de développement de thème correcte»..
Le principal avantage de la séparation de la logique de développement est la rapidité de production: plus vous pourrez créer rapidement des thèmes de qualité, plus vous pourrez générer de revenus. Conserver les fonctionnalités dans un plugin séparé est également utile pour les mises à jour. Imaginez que vous avez dix thèmes sur ThemeForest et que vous souhaitez ajouter de nouvelles fonctionnalités en tant que mise à jour. Avoir toutes vos fonctionnalités dans un seul plugin signifie que vous ne devez la mettre à jour qu'une seule fois, sans quoi même une petite mise à jour deviendrait lente et potentiellement douloureuse..
Donc, si vous voulez créer des thèmes puissants et gagner plus d’argent, respectez le système de plugins et de thèmes de WordPress..
Quel type de fonctionnalité un thème premium peut-il contenir? Quel genre de choses devrions-nous tirer dans un plugin séparé? Voici une liste des composants clés que nous gardons généralement séparés des fichiers de thème:
Dans cet article, nous ne détaillerons pas comment créer les composants eux-mêmes, mais nous expliquerons comment les intégrer tous dans un plugin addons..
Aller à votre wp-content> plugins et créez un dossier vide avec le nom de votre plugin emballé. Nous vous recommandons d'utiliser un nom explicite. Par exemple, notre plugin addons s’appelle «ninzio-addons» (Ninzio étant le nom de notre société).
Important: n'utilisez pas de trait de soulignement dans le nom du dossier! Utilisez un tiret si nécessaire.
Ensuite, dans ce dossier de plug-in, créez un fichier php avec exactement le même nom que votre dossier. Dans notre exemple, cela serait "ninzio-addons.php". Encore une fois, pas de soulignement s'il vous plaît. Ouvrez ce fichier et ajoutez le commentaire d'en-tête DocBlock suivant:
/ ** * Nom du plugin: Votre nom de plugin * URI du plugin: votre URL de plugin * Domaine de texte: text-domain * Chemin du domaine: / languages / * Description: Brève description du plugin * Auteur: Nom de l'auteur * Version: 1.0.0 * Auteur URI: auteur uri * /
Examinons les détails que nous avons ajoutés ici:
Maintenant, après avoir créé notre dossier de plugins addons et le fichier principal, il est temps de configurer notre plugin.
Dans le fichier de plugin principal, après le commentaire d'en-tête, collez cet extrait:
if (! define ('ABSPATH')) exit; // Quitter si on y accède directement
C'est pour des raisons de sécurité; il bloque l'accès direct au fichier plugin.
Juste après, ajoutez ce code:
function your_addons_load_plugin_textdomain () load_plugin_textdomain ('ninzio-addons', false, dirname (plugin_basename (__ FILE__)). '/ langages /'); add_action ('plugins_loaded', 'your_addons_load_plugin_textdomain');
Ici, nous chargeons notre plugin textdomain - assurez-vous que le nom de la fonction est correct. Notre recommandation pour nommer les fonctions est d'utiliser des noms auto-descriptifs avec un préfixe de votre plugin. Par exemple ninzio_addons
. Et comme il s’agit d’une fonction php, on peut utiliser des traits de soulignement au lieu de tirets.
Assurez-vous d'être précis lors de la copie ou de la saisie de la fonction load_plugin_textdomain. Pour le paramètre de domaine, entrez le domaine textuel exact défini précédemment. Et pour le paramètre de chemin relatif du plugin, entrez le chemin du dossier des langues que nous avons créé précédemment.
Définissons maintenant notre chemin de répertoire de plugin; ajoutez ce code:
define ('your_addons', plugin_dir_path (__FILE__));
Ici nous utilisons vos_addons
comme chemin du répertoire du plugin. Jusqu'ici tout va bien; nous avons créé notre plugin, il est maintenant temps de le remplir avec des fonctionnalités personnalisées.
Nous n'utiliserons pas cette étape pour expliquer comment créer un panneau d'options pour un thème. Vous pouvez en créer un personnalisé ou le faire comme nous le faisons. utilisez un cadre de panneau d'option de thème disponible dans le commerce. Si vous êtes nouveau dans les frameworks de panneaux d’options, nous vous recommandons de lire les articles de Bonang Salemane sur l’intégration du thème Redux Framework:
Pour ajouter un panneau d'option de thème à vos addons, copiez le dossier du panneau d'option, dans son intégralité, dans le dossier du plug-in des addons. Nous devons maintenant avoir besoin de plusieurs fichiers pour l'activer:
if (! class_exists ('ReduxFramework') && file_exists (your_addons. '/optionpanel/framework.php')) require_once ('optionpanel / framework.php'); if (! isset ($ redux_demo) && file_exists (your_addons. '/optionpanel/config.php')) require_once ('optionpanel / config.php');
Dans cet extrait de code, nous avions besoin des deux fichiers principaux de reduxframework: le fichier framework.php qui gère la fonctionnalité du panneau d’options et le fichier config, php, responsable des configurations du panneau d’options. Les fichiers de notre panneau d'options se trouvent dans un dossier «optionpanel» placé dans le dossier du plug-in ninzio-addons. Terminé.
Il est temps d'inclure des fonctions personnalisées. Créez un fichier dans votre dossier de plug-ins addons et nommez-le comme “addons-functons.php”. Mettez toutes vos fonctions personnalisées dans ce fichier.
Une chose à surveiller est que vous utilisez les conventions de dénomination des fonctions appropriées. Utilisez des noms de fonction descriptifs avec un préfixe unique. Par exemple:
fonction your_addons_profile_social_links () …
Juste après les fichiers de structure de thème, exigez votre fichier de fonctions personnalisées:
require_once ('includes / addons-functions.php');
Et maintenant, incluez des widgets personnalisés. Créez un dossier avec le nom «widgets» dans votre dossier de plug-in addons, placez tous vos fichiers de widgets personnalisés dans ce dossier. Nommer les fichiers de widgets personnalisés n’est pas critique ici, mais il est recommandé d’utiliser des préfixes et des tirets, et non des traits de soulignement..
Par exemple, notre fichier de widget Twitter personnalisé s'appelle «ninzio-recent-tweets.php». De même, notre widget Mailchimp s'appelle «ninzio-mailchimp.php». Incluons-les comme suit:
require_once ('widgets / ninzio-recent-tweets.php'); require_once ('widgets / ninzio-mailchimp.php');
Encore une fois, nous ne couvrirons pas le processus de création de widgets personnalisés; Pour cela, consultez le post de Bonang Salemane:
Si vous souhaitez ajouter un portefeuille, des événements ou tout autre élément similaire aux publications classiques de WordPress mais devant être séparé du thème, vous devez utiliser des types de publication personnalisés. Tous nos thèmes ont des types de messages personnalisés inclus. La création de types de publication personnalisés peut être complexe. Une fois encore, cela dépasse le cadre de ce didacticiel, mais je vous recommande de lire celui de Tom McFarlin:
Pour les types de publication personnalisés, vous devez créer un dossier séparé dans votre plug-in addons, par exemple «ninzio-projets». Et dans ce dossier, placez tous vos fichiers liés à vos types de publication personnalisés. Les fichiers les plus importants ici sont les fichiers principaux qui créent les types de publication personnalisés, le fichier de publication unique et le fichier de publication boucle / archive. Nommez le fichier principal de votre type de message personnalisé comme vous avez nommé votre dossier de type de message personnalisé, tel que «ninzio-projects.php». Placez votre code de type de message personnalisé dans ce fichier, puis, pour activer ce type de message, vous aurez besoin du fichier principal:
require_once ('ninzio-projects / ninzio-projects.php');
Lorsque vous séparez une telle fonctionnalité, vous devez toujours prendre en compte vos clients, plus précisément, comment ils peuvent étendre / réécrire vos fichiers de modèle de type publication personnalisé (archivés et uniques). Supposons que notre nom de type de message personnalisé soit «projets». Le fichier de type message personnalisé unique doit être appelé «single-projects.php» et le fichier boucle / archive doit être appelé «archive-projects.php»..
Et si votre type de publication personnalisé comporte également des taxonomies personnalisées, vous devez également créer un fichier séparé pour ces publications. Appelons notre fichier de taxonomie «taxonomy-projects.php». Nous avons maintenant trois fichiers:
unique-projets.php archive-projets.php taxonomie-projets.php
Rendons-les réinscriptibles. Ajoutez ces trois fonctions à votre fichier d’addons principal:
function your_addons_projects_single_template ($ single_template) global $ post; if ($ post-> post_type == 'projets') if ($ thème_file = localiser_template (array ('single-projects.php')))) $ single_template = $ theme_file; else $ single_template = your_addons. 'projets / single-projects.php'; return $ single_template; add_filter ("single_template", "your_addons_projects_single_template", 20);
function your_addons_projects_archive_template ($ archive_template) global $ post; if ($ post-> post_type == 'projets') if ($ thème_file = localiser_template (array ('archive-projects.php'))) $ archive_template = $ theme_file; else $ archive_template = your_addons. 'projets / archive-projects.php'; return $ archive_template; add_filter ("archive_template", "your_addons_projects_archive_template", 20);
function your_addons_projects_taxonomy_template ($ taxonomy_template) if (is_tax ('projects-category')) if ($ theme_file = Locate_template (tableau ('taxonomy-projects.php'))) $ taxonomy_template = $ theme_file; else $ taxonomy_template = your_addons. 'projets / taxonomy-projects.php'; return $ taxonomy_template; add_filter ("taxonomy_template", "your_addons_projects_taxonomy_template", 20);
Changez le nom de ces fonctions pour avoir votre préfixe unique. La logique principale consiste à charger les fichiers de modèle du type d'article personnalisé après avoir vérifié si une copie de celui-ci est présente dans le dossier du thème. Lorsque votre client copie le modèle de type de publication personnalisé dans le thème et l'étend ou l'écrase, le plug-in de votre addons charge la version de votre client du fichier de type de publication personnalisé. Donc, dans cette situation, vos fichiers de base dans le plug-in des addons ne sont pas modifiés, ils sont simplement élargi par votre client. Les futures mises à jour de votre plugin addons ne supprimeront pas les modifications personnalisées de votre client..
Pour les scripts et les styles personnalisés, nous vous recommandons de créer des dossiers séparés et de les mettre en file d'attente comme vous le feriez dans le fichier "functions.php" de votre thème..
Si vous envisagez d'ajouter des codes abrégés personnalisés, vous devez créer et inclure votre fichier de codes abrégés dans votre dossier d'addons. Créez un dossier avec le nom “shortcodes” et dans ce dossier, créez le fichier “yourprefix-shortcodes.php” (dans notre cas: “ninzio-shortcodes.php”). Dans le fichier «-shortcodes.php», vous devez mettre tout votre code de code court personnalisé.
Comme vous l'aurez compris, nous n'utiliserons pas ce tutoriel pour couvrir le processus de création de codes courts personnalisés, mais je vous recommande de lire le tutoriel de Siddharth:
Incluons notre fichier de shortcodes personnalisé:
require_once ('shortcodes / ninzio-shortcodes.php');
Nous avons presque fini avec le plugin addons. Après avoir testé toutes vos fonctionnalités personnalisées, il est temps de créer le fichier de langue pour rendre votre plugin traduisible..
Aller au dossier du plugin addons> langues. Utilisez le logiciel PoEdit (PoEdit est une application gratuite disponible pour Mac, Windows et Linux.) Pour générer le fichier de langue. Encore une fois, soyez très précis avec le nom du fichier; les fichiers résultants doivent être nommés exactement comme votre dossier de plug-in addons. Par exemple, le nom de notre plugin est “ninzio-addons”, le fichier de langue doit être “ninzio-addons.pot”. Il s’agit du fichier de langue principal contenant toutes les chaînes de votre domaine textdomain. À partir de ce fichier, vous pouvez créer d'autres fichiers de langue..
Pour traduire le fichier de langue de votre plugin addons:
Maintenant votre plugin est prêt, bravo! Nous avons extrait toutes les fonctionnalités nécessaires de nos fichiers de présentation et fourni un plugin complet que nous pouvons mettre à jour sur plusieurs thèmes..
J'espère que vous avez aimé suivre, n'oubliez pas que vous pouvez créer l'exemple de plug-in d'addons emballé sur Github et l'utiliser comme point de départ.