Page d'accueil du Codex en français - Télécharger WordPress en français
Les utilisateurs francophones se retrouvent sur le site WordPress-Francophone, notamment sur son forum d'entraide.
Les Extensions Wordpress (aussi appelées plugins) vous permettent de modifier, personnaliser et améliorer facilement un site WordPress. Plutôt que de changer le code source du coeur de Wordpress, vous pouvez ajouter des fonctionnalités supplémentaires avec les Extensions Wordpress. En voici une définition basique.
Une Extension WordPress est un programme ou un ensemble d'une ou plusieurs fonctions écrit en langage PHP, qui ajoute un ensemble de fonctionnalités ou de services au site WordPress. Vous pouvez intégrer, sans difficulté, une extension avec le site en utilisant les points d'accès et les méthodes fournies par Plugin Application Program Interface (API) de Wordpress.
Vous aimeriez que votre WordPress puisse avoir des fonctionnalités nouvelles ou modifiées ? Avant toute chose, pensez à rechercher parmis les nombreux dépôts et sources d'Extension Wordpress pour vérifier si une Extension Wordpress qui correspond à vos besoins n'a pas déjà été créée. Dans le cas contraire, cet article vous guidera à travers les étapes nécessaires pour créer votre propre Extension Wordpress.
Cet article part du principe que vous êtes à l'aise avec les fonctionnalités de base de Wordpress ainsi qu'avec la programmation PHP.
Ressources
Cette section de l'article vous indique la marche à suivre – ainsi que quelques points notables – afin de créer proprement une Extension.
La première tâche à effectuer, lorsque vous créez une Extension Wordpress, est de réfléchir à ce votre l'Extension fera, puis de lui choisir un nom (de préférence unique). Jetez un oeil à la page des Plugins (ainsi qu'aux autres dépôts qui y sont proposés) afin de vérifier que votre nom est unique. Vous pouvez aussi faire une recherche Google sur le nom que vous souhaitez soumettre. La plupart des développeurs d'Extension choisissent d'utiliser des noms décrivant ce que l'Extension propose : par exemple, une Extension en lien avec la météo se retrouvera probablement avec le mot "météo" dans son nom. Un nom peut être composé de plusieurs mots.
L'étape suivante est de créer un fichier PHP avec un nom dérivé de celui que vous aurez choisi pour votre Extension. Par exemple, si vous souhaitez nommer votre Extension "Fabulous Functionality", vous devriez appeler votre fichier PHP fabulous-functionality.php. Les gens qui installeront votre Extension devront placer ce fichier PHP dans le dossier 'Plugins' de leur installation de Wordpress – communément wp-content/plugins/ – il ne faut donc pas que deux Extensions dans ce dossier puissent avoir le même nom de fichier PHP.
Le nom de fichier de votre Extension devrait aussi être unique afin que votre Extension n'entre pas en conflit avec une autre Extension dans le dépôt d'Extension. Une bonne solution étant d'utiliser le nom de votre société comme préfixe, sans espace ni caractère spécial – par exemple, nomdemasociete-fabulous-functionality.php.
Votre Extension Wordpress doit contenir au moins un fichier PHP; elle peut aussi contenir des fichiers JavaScript, des fichiers CSS, des fichiers image et des fichiers langage. S'il y a plusieurs fichiers, choisissez un nom unique pour le dossier et un nom de votre choix pour le fichier PHP principal. (Ce nom de fichier est souvent, mais pas obligatoirement, le même que celui du dossier.) Exemple pour les noms d'un dossier et d'un fichier qui pourraient être respectivement nomdemasociete-fabulous-functionality and nomdemasociete-fabulous-functionality.php. Mettez tous les fichiers de votre Extension dans le dossier que vous avez créé et précisez aux utilisateurs de votre Extension de téléverser l'entièreté du dossier vers wp-content/plugins/.
Si vous utilisez un dossier pour contenir vos fichier d'Extension, alors le nom du dossier sera utilisé par Wordpress lors de la vérification du dépôt Wordpress pour les mises à jour. Si votre Extension n'est constitué que d'un seul fichier PHP, alors le nom de ce fichier sera utilisé. Si Wordpress vous alerte qu'une version plus récente de votre Extension est disponible, mais que celle-ci ne vous dit rien, soyez vigilant. Il se peut qu'une autre Extension portant le même nom de dossier ou de fichier soit présent dans le dépôt, et c'est celui-ci que Wordpress voit.
Une installation Wordpress peut être configurée afin que le dossier standart d'Extension ne soit plus wp-content/plugins/, vous devrez donc utiliser plugin_dir_path() et plugins_url() pour les chemins et URLs absolues à l'interieur de votre code PHP. Pour plus de détails, voir Determining Plugin and Content Directories.
Dans la suite de cet article, "le fichier PHP de l'Extension" fait référence au fichier PHP principal de l'Extension : qu'il soit directement dans le dossier wp-content/plugins/, ou dans un sous-dossier.
Note de sécurité: Prenez en compte le fait de bloquer l'accès direct aux fichiers PHP de votre Extension en ajoutant la ligne suivante au début de chacun d'entre eux. Assurez-vous aussi d'empêcher l'exécution de code PHP sensible et autonome avant d'appeler la moindre fonction Wordpress, quelle qu'elle soit.
Ceci peut-être réalisé en quelque jours. Vous pouvez soit vérifier si la constante ABSPATH
est définie, soit vérifier si une fonction telle que add_action
existe. Ces deux méthodes peuvent être utilisées pour s'assurer que l'execution du PHP n'est autorisée que lorsque qu'elle fait partie intégrante du système du coeur.
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
Si vous souhaitez héberger votre Extension sur https://wordpress.org/plugins/, vous aurez besoin de créer un fichier readme.txt (lisez-moi) à l'interieur du dossier de votre extension, dans un format normalisé. Voir https://wordpress.org/plugins/about/readme.txt pour une description du format, ou utiliser le plugin 'readme.txt' generator automatique.
The WordPress plugin repository uses the "Requires" and "Tested up to" versions from the readme.txt in the stable tag.
Il est très utile pour les utilisateurs de l'Extension si vous créez une page web qui fait office de source d'information pour votre Extension Wordpress. Cette page decrirait comment installer l'Extension, ce qu'elle fait, avec quelle version de Wordpress elle est compatible, ce qui change d'une version à l'autre de l'Extension, et comment utiliser cette Extension.
C'est le moment de mettre quelques informations dans le fichier PHP principal de votre Extension.
Read about this in the plugin developer handbook.
Read about this in the plugin developer handbook.
Ensuite, il est temps que votre Extension fasse quelquechose. Cette section contient quelques idées générales sur le développement d'Extension et décrit comment permettre à votre Extension d'accomplir plusieurs tâches.
Nombreuses Extensions Wordpress accomplissent leurs buts en se connectant à un, voir plusieurs "hooks" d'Extension Wordpress. Afin que les hooks d'Extension puissent fonctionner à différentes reprises lorsque Wordpress est en cours d’exécution, Wordpress vérifie si une quelconque Extension aurait des fonctions déposées qui peuvent être exécutées. Le cas échéant, ces fonctions sont exécutées. Ces fonctions modifient le comportement par défaut de Wordpress.
Par exemple, avant que Wordpress n'ajoute le titre d'un article dans la barre du navigateur, il vérifie au préalable s'il existe une Extension qui aurait déposé une fonction pour le hook "filtre" nommé "the_title". Si tel est le cas, le texte du titre est traité par chaque fonction déposée et l'affichage final est est le résultat de l'ensemble de ces fonctions déposées. Si votre Extension nécessite des informations additionnelles sur l'affichage du titre, celle-ci peut déposer une fonction spéciale qui sera appelée lorsque le filtre "the_title" est appelé.
Another example is the "action" hook "wp_footer". Just before the end of the HTML page generated by WordPress, this hook checks to see whether any Plugins have registered functions against it. If so, it runs them in turn.
You can learn more about how to register functions for both filter and action hooks – and what Plugin hooks are available in WordPress – in the Plugin API. If you find a spot in the WordPress code where you'd like to have an action or filter, but WordPress doesn't have one, you can also suggest new hooks. (Suggestions will generally be taken; see Reporting Bugs to find out how you can submit a suggestion.)
Une autre méthode pour une Extension Wordpress d'ajouter des fonctionnalité à Wordpress est de créer des Template Tags personnalisés. Quelqu'un qui souhaite utiliser votre Extension peut ajouter ces "marqueurs" à son thème, dans la barre latérale, section contenu d'article, ou où que ce soit d'approprié. Par exemple, une Extension qui ajoute des marqueurs géographiques aux articles peut définir une fonction marqueur modèle nommé geotag_list_states() pour la barre latérale, ce qui listera tous les états des articles qui sont marqués avec, avec les liens vers les pages basées sur l'archive que l'Extension active.
Pour définir un modèle de marquer personnalisé, écrivez simplement une fonction PHP et documentez-la pour les utilisateurs de l'Extension sur votre page d'accueil d'Extension et/ou dans le fichier PHP principal de votre Extension. C'est une bonne idée, lorsque vous documentez la fonction, de donner un exemple de ce qui est nécessaire d'ajouter au fichier thème pour utiliser la fonction, incluant <?php et ?>.
La plupart des Extensions Wordpress nécessiterons de récupérer des données entrées par le propriétaire du site/blog et de les sauvegarder entre les sessions pour les utiliser dans ses fonctions filtres, fonctions d'action et fonctions de template. Ces informations doivent être stockées dans la base de données Wordpress, dans le but de persister au travers des sessions. Il existe quatre (4) méthodes pour sauvegarder les données de l'Extension dans la base de données :
Voir Creating Options Pages pour savoir comment créer une page qui sauvegardera automatiquement vos options pour vous.
Wordpress possède un mécanisme pour sauvegarder, mettre à jour et récupérer les pièces de données individuelles ("options") dans la base de données de Wordpress. Les valeurs d'options peuvent être des chaines, des arrays ou des objets PHP (ils seront "sérialisés" ou convertis en chaîne, avant stockage, puis "désérialisés" lors de la récupération). Les noms d'options sont des chaînes et doivent être uniques, afin de ne pas enter en conflit avec Wordpress ou une autre Extension.
Il est aussi généralement considéré comme judicieux de minimiser le nombre d'options que vous utilisez pour votre Extension. Par exemple, au lieu de stocker 10 noms d'options différents, songez à stocker un array sérialisé de 10 éléments en une seule option nommée.
Voici les principales fonctions que votre Extension peut utiliser pour accéder aux options Wordpress.
add_option($name, $value, $deprecated, $autoload);
get_option($option);
update_option($option_name, $newvalue);
En admettant que votre Extension possède quelques options stockées dans la base de données Wordpress (voir la section ci-dessus), vous voudrez probablement que celui-ci ai un panneau d'administration qui permettra aux utilisateurs de votre Extension de vois et éditer les valeurs des options. Les méthodes pour faire ceci sont décrites dans Adding Administration Menus.
Une fois que la programmation de votre Extension achevée, un autre point à prendre en compte (en supposant que vous prévoyiez de distribuer votre Extension) est l'Internationalisation. L'Internationalisation est le procèdé de configuration logicielle qui lui permet d'être localisé; la localisation est le procèdé de traduction du text affiché par le logiciel en différentes langues. Wordpress est utilisé partout dans le monde et a donc été construit en incluant une Internationalisation et une Localisation dans sa structure, incluant la Localisation des Extensions.
Veuillez noter que les fichiers langage pour les Extensions NE SONT PAS chargés automatiquement. Ajoutez ceci au code de l'Extension afin de vous assurer que le(s) fichier(s) langage sont bien chargés :
load_plugin_textdomain('your-unique-name', false, basename( dirname( __FILE__ ) ) . '/languages' );
Pour rapporter une chaîne, utilisez simplement __('String name','your-unique-name'); pour retourner la traduction ou _e('String name','your-unique-name'); pour afficher la traduction. Les traductions iront ensuite dans le dossier /languages de votre Extension.
Il est fortement recommandé d'internationaliser son Extension afin que les utilisateurs venant de différents pays puisse la localiser. Il y a une référence relativement accessible à propos de l'Internationalisation, incluant une section devrivant comment internationaliser son plugin, sur I18n for WordPress Developers.
Cette section décrit les étapes nécessaires pour mettre à jour votre Extension lorsque vous l'hébergez sur https://wordpress.org/plugins/, incluant les détails sur l'utilisation de Subversion (SVN) avec wordpress.org.
En admettant que vous ayez déjà soumis votre Extension au WordPress Plugin Repository, au fil du temps vous trouverez probablement le besoin et, espérons-le, le temps, d'ajouter des fonctionnalités à votre Extension ou corriger des bugs. Travailler sur ces changements et intégrer ces changements au tronçons de votre Extension aussi souvent que vous le désirez. Ces changements seront visibles en public, mais uniquement par les personnes les plus techniques jettant un oeil à votre Extension via SVN. Ce que les autres utilisateurs téléchargent depuis le site ou l'administration de leur Extension reste inchangé.
Lorsque vous êtes prêt à lancer une nouvelle version de l'Extension: