Codex

Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

User:Verrnum/fr:Créer une extension

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.

This page is marked as incomplete. You can help Codex by expanding it.

Introduction

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

  • Pour comprendre comment les Extensions Wordpress fonctionnent et comment les installer sur votre blog Wordpress, se référer à fr:Plugins.
  • Vous trouverez une liste d'articles et de ressources accessibles pour les développeurs d'Extension dans Plugin Resources, incluant des articles externes sur la création d'Extensions WordPress ainsi que des articles sur des sujets spécifiques.
  • Pour apprendre les bases de l'écriture d'une Extension Wordpress, jetez un oeil à un code source bien écrit tel que celui de Hello Dolly, distribué avec WordPress.
  • Une fois votre Extension Wordpress créée, lire Plugin Submission and Promotion pour apprendre comment distribuer et partager cette dernière.

Création d'une Extension

Cette section de l'article vous indique la marche à suivre – ainsi que quelques points notables – afin de créer proprement une Extension.

Noms, Fichiers et Emplacements

Nom d'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.

Fichiers d'une Extension

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!' );

Fichier Lisez-moi

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.

Page d'accueil

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.

En-têtes de Fichier

C'est le moment de mettre quelques informations dans le fichier PHP principal de votre Extension.

Information Standard d'Extension

Read about this in the plugin developer handbook.

Licence

Read about this in the plugin developer handbook.

Programmation de votre Extention

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.

Hooks d'Extension WordPress

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.)

Modèle de Marqueurs

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 ?>.

Sauvegarde des Données de l'Extension dans la Base de Données

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 :

  1. Utiliser le mécanisme d'"option" de Wordpress (décrit plus bas). Cette méthode est appropriée pour stocker un petit nombre, relativement statiques, de pièces de données -- le type de données attendues d'un propriétaire de site lorsque qu'il paramètre pour la première fois l'Extension, et qui changent rarement ultérieurement.
  2. Post Meta (aussi appelé Champs personnalisés). Approprié pour les données associées aux articles, pages ou pièces jointes individuelles. Voir post_meta Function Examples, add_post_meta(), et fonctions relatives.
  3. Taxonomie Personnalisée. Pour classifier des articles ou autres objets tels que les utilisateurs, commentaires, nom/liste de données d'utilisateur à valeur éditable, songez à utiliser une Taxonomie Personnalisée, particulièrement lorsque vous voulez accèder à tous les articles/obljets associés avec un terme taxonomique donné. Voir Custom Taxonomies.
  4. Créer une nouvelle table de base de données personnalisée. Cette méthode est appropriée pour les données non associées avec des articles, pages, pièces-jointes ou commentaires, individuels. -- le type de données vouées à grossir avec le temps, et qui n'ont pas de noms individuels. Voir Creating Tables with Plugins connaître la marche à suivre.

Mécanisme des Options Wordpress

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);
Créé une nouvelle option; ne fait rien si l'option existe déjà.
$name
Obligatoire (string). Nom de l'option à ajouter.
$value
Optionnel (mixed), chaîne vide par défaut. Valeur d'option qui sera stockée.
$deprecated
Optionnel (string), n'est plus utilisé par WordPress. Vous pouvez passer cet argument en chaîne vide ou en null si vous souhaitez utiliser le paramètre $autoload suivant.
$autoload
Optionnel, par défaut sur 'yes' (enum: 'yes' ou 'no'). Si elle est configurée sur 'yes' la configuration est automatiquement récupérée par la fonction wp_load_alloptions.
get_option($option);
Récupère une valeur d'option depuis la base de données.
$option
Obligatoire (string). Nom de l'option dont vous voulez retourner la valeur.Vous pouvez trouver une liste des options par défaut installées avec Worpress sur Option Reference.
update_option($option_name, $newvalue);
Met à jour ou créé une valeur d'option dans la base de données (notez que add_option n'a pas besoin d'être appelée si vous ne voulez pas utiliser les paramètres $deprecated ou $autoload).
$option_name
Obligatoire (string). Nom de l'option à mettre à jour.
$newvalue
Obligatoire. (string|array|object) Nouvelle valeur de l'option.

Panneaux d'administration

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.

Internationalisation d'Extension

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.

Mise à Jour de votre Extension

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:

  • Assurez-vous que tout est implémenté et que la nouvelle version marche vraiment. Faites attention à toutes les versions de Wordpress que votre Extension prend en charge et essayez de l'utiliser avec chacune d'entre elles. Ne testez pas seulement les nouvelles fonctionnalités; vérifiez aussi que vous n'avez pas accidentellement cassé des fonctionnalités plus anciennes de votre Extension.
  • Mettez à jour le numéro de version dans le commentaire d'en-tête du fichier PHP principal (dans le dossier tronçon).
  • Mettez à jour le numéro de version dans le champs 'Stable tag' du fichier readme.txt (dans le dossier tronçon)
  • Ajoutez une nouvelle sous-section dans la section 'changelog' du fichier readme.txt, decrivant succintement ce qui change par rapport à la version précèdente. Celle-ci sera listée dans l'onglet 'Changelog' de la page de votre Extension.
  • Intégrez cet changements.
  • Créez un nouveau tag SVN en tant que copie du tronçon en suivant ce guide.