{"id":949,"date":"2009-11-25T06:30:41","date_gmt":"2009-11-25T05:30:41","guid":{"rendered":"http:\/\/blogs.wittwer.fr\/whiler\/?p=949"},"modified":"2012-03-02T04:08:46","modified_gmt":"2012-03-02T03:08:46","slug":"comment-publier-une-extension-wordpress","status":"publish","type":"post","link":"https:\/\/blogs.wittwer.fr\/whiler\/2009\/11\/25\/comment-publier-une-extension-wordpress\/","title":{"rendered":"Comment publier une extension dans le r\u00e9f\u00e9rentiel WordPress ?"},"content":{"rendered":"<p>Dans un <a href=\"\/whiler\/2009\/11\/23\/exemple-complet-extension-wordpress\/\">pr\u00e9c\u00e9dent article<\/a>, nous avons vu comment d\u00e9velopper une extension.<\/p>\n<p>Lorsque celle-ci est fonctionnelle, on peut vouloir la mettre \u00e0 disposition de la communaut\u00e9.<br \/>\nN&rsquo;ayant pas imm\u00e9diatement trouv\u00e9 comment publier ma propre extension, je d\u00e9cris dans cet article les quelques \u00e9tapes n\u00e9cessaires&nbsp;:<\/p>\n<ul>\n<li> Soumettre son extension en allant sur <a href=\"https:\/\/wordpress.org\/extend\/plugins\/add\/\" target=\"_blank\">une page d\u00e9di\u00e9e<\/a> du site de <a href=\"http:\/\/fr.wikipedia.org\/wiki\/WordPress\" rel=\"glossary\" target=\"_blank\" title=\"Wikipedia, D&eacute;finition de&nbsp;: WordPress\" style=\"\" >WordPress<\/a><sup style=\"font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA\" ><em>W<\/em><\/sup>. C&rsquo;est la premi\u00e8re chose \u00e0 faire car sa validation peut prendre un certain temps, dans mon cas, un peu plus d&rsquo;une journ\u00e9e.<\/li>\n<li> T\u00e9l\u00e9charger une copie d&rsquo;un fichier exemple <a href=\"https:\/\/wordpress.org\/extend\/plugins\/about\/readme.txt\" target=\"_blank\">readme.txt<\/a>.\n<ul>\n<li> On le sauvegarde \u00e0 la racine du r\u00e9pertoire de son extension et on l&rsquo;\u00e9dite pour sp\u00e9cifier les informations de son extension.<\/li>\n<li> Les captures d&rsquo;\u00e9cran \u00e9ventuelles devront \u00e9galement \u00eatre sauvegard\u00e9es \u00e0 la racine.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Lorsque la demande est approuv\u00e9e, on re\u00e7oit un email qui contient toutes les informations n\u00e9cessaires, et d\u00e8s lors que le projet a \u00e9t\u00e9 cr\u00e9\u00e9 dans le <a href=\"https:\/\/plugins.svn.wordpress.org\/\" target=\"_blank\">r\u00e9f\u00e9rentiel<\/a> <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Subversion_(logiciel)\" rel=\"glossary\" target=\"_blank\" title=\"Wikipedia, D&eacute;finition de&nbsp;: SVN\" style=\"\" >SVN<\/a><sup style=\"font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA\" ><em>W<\/em><\/sup> des extensions de WordPress, on peut passer \u00e0 la publication&#8230;<\/p>\n<p>En utilisant un client SVN, comme <a target=\"_blank\" href=\"https:\/\/tortoisesvn.tigris.org\/\">TortoiseSVN<\/a>, on pourra se connecter et publier&nbsp;:<!--more--><\/p>\n<ul>\n<li>L&rsquo;<a target=\"_blank\" href=\"https:\/\/plugins.svn.wordpress.org\/random-number-generator\/\">adresse du projet<\/a> est sp\u00e9cifi\u00e9e dans l&#8217;email que l&rsquo;on re\u00e7oit.<\/li>\n<li>Le <a target=\"_blank\" href=\"https:\/\/plugins.svn.wordpress.org\/random-number-generator\/trunk\/\">r\u00e9pertoire trunk<\/a> contient la version en cours de d\u00e9veloppement.<\/li>\n<li>Le <a target=\"_blank\" href=\"https:\/\/plugins.svn.wordpress.org\/random-number-generator\/tags\/\">r\u00e9pertoire tags<\/a> contient les diff\u00e9rentes version publi\u00e9es.<\/li>\n<\/ul>\n<p>On choisit l&rsquo;ensemble des fichiers \u00e0 publier&nbsp;:<br \/>\n<div id=\"attachment_974\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a title=\"Publication de la version courante\" href=\"\/whiler\/wp-content\/uploads\/2009\/11\/rng_svn_commit_files.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-974\" src=\"\/whiler\/wp-content\/uploads\/2009\/11\/rng_svn_commit_files-300x298.jpg\" alt=\"Publication de la version courante\" title=\"Cliquer pour agrandir\" width=\"300\" height=\"298\" class=\"size-medium wp-image-974\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2009\/11\/rng_svn_commit_files-300x298.jpg 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2009\/11\/rng_svn_commit_files-150x150.jpg 150w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2009\/11\/rng_svn_commit_files.jpg 505w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-974\" class=\"wp-caption-text\">Publication de la version courante<\/p><\/div><\/p>\n<p>On v\u00e9rifie que tout se passe correctement&nbsp;:<br \/>\n<div id=\"attachment_975\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a title=\"D\u00e9ploiement dans le r\u00e9f\u00e9rentiel\" href=\"\/whiler\/wp-content\/uploads\/2009\/11\/rng_svn_committing_files.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-975\" src=\"\/whiler\/wp-content\/uploads\/2009\/11\/rng_svn_committing_files-300x134.jpg\" alt=\"D\u00e9ploiement dans le r\u00e9f\u00e9rentiel\" title=\"Cliquer pour agrandir\" width=\"300\" height=\"134\" class=\"size-medium wp-image-975\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2009\/11\/rng_svn_committing_files-300x134.jpg 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2009\/11\/rng_svn_committing_files.jpg 661w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-975\" class=\"wp-caption-text\">D\u00e9ploiement dans le r\u00e9f\u00e9rentiel<\/p><\/div><\/p>\n<p>Puis on publie une version qui sera directement accessible \u00e0 tous les utilisateurs en \u00ab\u00a0tagant\u00a0\u00bb la version stable en cours&nbsp;:<br \/>\n<div id=\"attachment_976\" style=\"width: 286px\" class=\"wp-caption aligncenter\"><a title=\"Publication d&#039;une version officielle\" href=\"\/whiler\/wp-content\/uploads\/2009\/11\/rng_svn_tag_version.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-976\" src=\"\/whiler\/wp-content\/uploads\/2009\/11\/rng_svn_tag_version-276x300.jpg\" alt=\"Publication d&#039;une version officielle\" title=\"Cliquer pour agrandir\" width=\"276\" height=\"300\" class=\"size-medium wp-image-976\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2009\/11\/rng_svn_tag_version-276x300.jpg 276w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2009\/11\/rng_svn_tag_version.jpg 461w\" sizes=\"auto, (max-width: 276px) 100vw, 276px\" \/><\/a><p id=\"caption-attachment-976\" class=\"wp-caption-text\">Publication d'une version officielle<\/p><\/div><\/p>\n<p>Apr\u00e8s quelques minutes, la nouvelle version est r\u00e9f\u00e9renc\u00e9e et disponible pour l&rsquo;ensemble de la communaut\u00e9&nbsp;:<br \/>\n<div id=\"attachment_979\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a title=\"Extension r\u00e9f\u00e9renc\u00e9e pour tout le monde\" href=\"\/whiler\/wp-content\/uploads\/2009\/11\/rng_available_plugin.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-979\" src=\"\/whiler\/wp-content\/uploads\/2009\/11\/rng_available_plugin-300x72.jpg\" alt=\"Extension r\u00e9f\u00e9renc\u00e9e pour tout le monde\" title=\"Cliquer pour agrandir\" width=\"300\" height=\"72\" class=\"size-medium wp-image-979\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2009\/11\/rng_available_plugin-300x72.jpg 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2009\/11\/rng_available_plugin-1024x246.jpg 1024w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2009\/11\/rng_available_plugin.jpg 1104w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-979\" class=\"wp-caption-text\">Extension r\u00e9f\u00e9renc\u00e9e pour tout le monde<\/p><\/div><\/p>\n<p>Depuis la <a target=\"_blank\" href=\"https:\/\/wordpress.org\/extend\/plugins\/random-number-generator\/\">page de <strong>son<\/strong> extension<\/a>, lorsque l&rsquo;on s&rsquo;est authentifi\u00e9, un onglet additionnel est disponible pour nous aider \u00e0 administrer notre extension. On y retrouve&nbsp;:<\/p>\n<ul>\n<li>les liens utiles\n<ul>\n<li>pour <a target=\"_blank\" href=\"https:\/\/plugins.svn.wordpress.org\/random-number-generator\/\">SVN<\/a><\/li>\n<li>pour le <a target=\"_blank\" href=\"https:\/\/plugins.trac.wordpress.org\/browser\/random-number-generator\/\">gestionnaire de bugs<\/a>, <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Trac_(logiciel)\" rel=\"glossary\" target=\"_blank\" title=\"Wikipedia, D&eacute;finition de&nbsp;: Trac\" style=\"\" >Trac<\/a><sup style=\"font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA\" ><em>W<\/em><\/sup><\/li>\n<li>les <a href=\"https:\/\/plugins.trac.wordpress.org\/log\/random-number-generator\/\" target=\"_blank\">r\u00e9visions publi\u00e9es<\/a><\/li>\n<\/ul>\n<\/li>\n<li>des outils pour vous aider \u00e0 <a href=\"\/whiler\/2009\/11\/01\/extensions-wordpress-francais\/\">internationaliser<\/a> votre extension (g\u00e9n\u00e9ration du fichier POT, ajout de votre domaine)<\/li>\n<\/ul>\n<p> <img src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-includes\/images\/smilies\/skype\/\/tmi.gif\" alt=\"(tmi)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> Les probl\u00e8mes que j&rsquo;ai rencontr\u00e9s, les pi\u00e8ges dans lesquels j&rsquo;ai fonc\u00e9 la t\u00eate baiss\u00e9e&nbsp;:<\/p>\n<ul>\n<li>J&rsquo;ai cr\u00e9\u00e9 un fichier avec mon bloc-note et celui-ci n&rsquo;\u00e9tait pas au format UTF-8&#8230; une fois d\u00e9ploy\u00e9 et install\u00e9 via WordPress, lorsque je suis all\u00e9 l&rsquo;\u00e9diter en ligne, tous les accents \u00e9taient mal encod\u00e9s&#8230;<\/li>\n<li>Pour cr\u00e9er certains liens, utiliser des fichiers, j&rsquo;avais utilis\u00e9 un chemin partiellement cod\u00e9 en dur&nbsp;: le r\u00e9pertoire de l&rsquo;extension \u00e9tait une cha\u00eene de caract\u00e8res&#8230; et comme le chemin n&rsquo;\u00e9tait pas le m\u00eame entre mon serveur de test et celui de prod&#8230; je l&rsquo;ai alors totalement remplac\u00e9 par l&rsquo;appel de fonctions pour avoir un chemin totalement dynamique.<\/li>\n<li>Lors de mise \u00e0 jour de mon r\u00e9pertoire <em>trunk<\/em>, j&rsquo;avais mis \u00e0 jour mon fichier <em>readme.txt<\/em>, dont la valeur de <em>Stable Tag<\/em>, en mettant le futur num\u00e9ro de version de ma version de d\u00e9veloppement actuelle. Or c&rsquo;est cette valeur qui est utilis\u00e9e par WordPress pour d\u00e9terminer la version courante de l&rsquo;extension. N&rsquo;ayant pas encore tagu\u00e9 la version en cours de d\u00e9veloppement, la version stable courante n&rsquo;\u00e9tait pas celle que je souhaitais&#8230;<\/li>\n<\/ul>\n<div class=\"thanks_button_div\" \n                  style=\"float: right; margin-right: 10px; margin-top:10px;\"><div id=\"thanksButtonDiv_949_1\" style=\"background-image:url(https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/plugins\/thanks-you-counter-button\/images\/thanks_compact_brown1.png); background-repeat:no-repeat; float: left; display: inline;\"\n                onmouseover=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_949_1', true);\" \n                onmouseout=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_949_1', false);\"\n                onclick=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_949_1', false);\" >\n                <input type=\"button\" onclick=\"thankYouButtonClick(949, 'You left &ldquo;Thanks&rdquo; already for this post')\" value=\"Merci\u00a0 1\"\n                  class=\"thanks_button thanks_compact thanks_brown1\"\n                  style=\"  font-family: Verdana, Arial, Sans-Serif; font-size: 14px; font-weight: normal;; color:#00f;\"\n                  id=\"thanksButton_949_1\" title=\"Click to leave &ldquo;Thanks&rdquo; for this post\"\/>\n             <\/div><div id=\"ajax_loader_949_1\" style=\"display:inline;visibility: hidden;\"><img decoding=\"async\" alt=\"ajax loader\" src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/plugins\/thanks-you-counter-button\/images\/ajax-loader.gif\" \/><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Dans un pr\u00e9c\u00e9dent article, nous avons vu comment d\u00e9velopper une extension.<br \/>\nLorsque celle-ci est fonctionnelle, on peut vouloir la mettre \u00e0 disposition de la communaut\u00e9.<br \/>\nN\u2019ayant pas imm\u00e9diatement trouv\u00e9 comment publier ma propre extension, je d\u00e9cris dans cet article les quelques \u00e9tapes n\u00e9cessaires&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[6,9,11],"tags":[99,15,106,100,111,26,128,108,107],"class_list":["post-949","post","type-post","status-publish","format-standard","hentry","category-dev","category-php","category-web","tag-addons","tag-api","tag-blog","tag-extensions","tag-html","tag-plugin","tag-rng","tag-script","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/949","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/comments?post=949"}],"version-history":[{"count":0,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/949\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/media?parent=949"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/categories?post=949"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/tags?post=949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}