<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>z720.net &#187; DÃ©veloppement</title>
	<atom:link href="http://z720.net/blog/categories/web/developpement/feed" rel="self" type="application/rss+xml" />
	<link>http://z720.net</link>
	<description>Web / Inspiration / Photos</description>
	<lastBuildDate>Sun, 30 Oct 2011 17:02:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Migration WordPress en un clin d&#8217;oeil</title>
		<link>http://z720.net/blog/archives/2007/01/19/migration-wordpress-en-un-clin-doeil</link>
		<comments>http://z720.net/blog/archives/2007/01/19/migration-wordpress-en-un-clin-doeil#comments</comments>
		<pubDate>Fri, 19 Jan 2007 18:43:30 +0000</pubDate>
		<dc:creator>Seb</dc:creator>
				<category><![CDATA[DÃ©veloppement]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://v05.z720.net/blog/archives/2007/01/19/migration-wordpress-en-un-clin-doeil</guid>
		<description><![CDATA[Les versions de WordPress pleuvent en ce moment, la 2.0.7 pour des raisons de sÃ©curitÃ©, la 2.1 en Release Candidate. Mais la question la plus importante c&#8217;est comment dÃ©ployer WordPress Ã  chaque nouvelle version ? Quelle est la meilleur solution &#8230; <a href="http://z720.net/blog/archives/2007/01/19/migration-wordpress-en-un-clin-doeil">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Les versions de WordPress pleuvent en ce moment, la 2.0.7 pour des raisons de sÃ©curitÃ©, la 2.1 en <a href="http://fr.wikipedia.org/wiki/Release_Candidate">Release Candidate</a>. Mais la question la plus importante c&#8217;est comment dÃ©ployer WordPress Ã  chaque nouvelle version ? Quelle est la meilleur solution pour un site productif ? Par site productif, j&#8217;entends bien Ã©videment un site accessible Ã  des utilisateurs, Ã§a n&#8217;a aucun rapport avec le contenu ou la frÃ©quence de mise Ã  jour&#8230;</p>
<p><span id="more-210"></span></p>
<h2><a href="#bourrin" title="bourrin" name="bourrin">La mÃ©thode bourrin</a></h2>
<p>Il existe une mÃ©thode qui a fait ses preuves depuis de nombreuses annÃ©es, Ã  l&#8217;Ã©poque oÃ¹ peu de sites n&#8217;utilisaient de langages tels que PHP. Charger les fichiers Ã  mettre Ã  jour via votre client FTP favoris en remplaÃ§ant les anciens. Le problÃ¨me c&#8217;est que le temps de transfert n&#8217;est toujours pas immÃ©diat. Donc pendant que vous allez transfÃ©rer vos fichiers, vos utilisateurs vont utiliser une application avec des bouts de code de versions diffÃ©rentes et lÃ  c&#8217;est le drame. Soit vous avez de la chance et tout fonctionne, soit le site plante avec une erreur PHP et votre visiteur vous prend pour un charlot, soit tout semble fonctionner pour lui et vos donnÃ©es deviennent incohÃ©rentes dans la base. Bref ce n&#8217;est pas la meilleur solution si vous avez un peu de trafic sur votre site. Sinon utilisez la plage de 2 heures lorsque personne ne visite votre site (souvent entre 2h et 4h du matin).</p>
<h2><a href="#malin" title="malin" name="malin">La mÃ©thode dÃ©rangement</a></h2>
<p>Une autre mÃ©thode consiste Ã  rediriger toutes les visites vers une page indiquant que pour des raisons techniques et/ou de maintenance le site est indisponible pendant quelques temps, le temps pour vous de mettre Ã  jour tous les scripts, de mettre Ã  jour la base de donnÃ©es et de vÃ©rifier que tout s&#8217;est bien passÃ©. Malheureusement pendant ce temps, les visiteurs peuvent se dÃ©courager et ne pas revenir si le temps de maintenance est trop long ce qui est souvent le cas pour les visites depuis un moteur de recherche.</p>
<h2><a href="#bon" title="bon" name="bon">La mÃ©thode transparente</a></h2>
<p>La mÃ©thode que je vous propose devrait vous permettre de rÃ©duire considÃ©rablement le temps d&#8217;indisponibilitÃ© lors d&#8217;une mise Ã  jour majeure.</p>
<p>La premiÃ¨re chose Ã  faire est de tester la nouvelle version en local pour s&#8217;assurer que tout va fonctionner. C&#8217;est Ã©vident mais comme Ã§a va sans dire, c&#8217;est toujours mieux en le disant. C&#8217;est la phase de qualification (pour les pros).</p>
<p>ProcÃ©dure de dÃ©ploiement d&#8217;une nouvelle version de WordPress :</p>
<ol>
<li>PrÃ©paration (en local):
<ol>
<li>Placer la nouvelle version dans un rÃ©pertoire spÃ©cifique par exemple dans v2</li>
<li>Chargez votre thÃ¨me dans le dossier v2/wp-content/themes ainsi que vos plugins dans v2/wp-content/plugins</li>
<li>Chargez le fichier de localisation si vous n&#8217;utilisez pas WordPress en anglais. Pensez Ã  prendre le fichier de localisation correspondant Ã  la version que vous dÃ©ployez.</li>
<li>Chargez le contenu de vos uploads (wp-content/uploads) si vous n&#8217;avez pas dÃ©placer vos upload ailleurs.</li>
<li>Testez</li>
<li>Chargez le fichier wp-config.php de la version prÃ©cÃ©dente dans le dossier v2 pour rÃ©cupÃ©rer le paramÃ©trage de base de donnÃ©es et de localisation.</li>
</ol>
</li>
<li>DÃ©ploiement (sur votre serveur)
<ol>
<li>Chargez le contenu de votre rÃ©pertoire v2 Ã  l&#8217;endroit oÃ¹ votre site doit se situer. A la racine du domaine si votre site est accessible directement depuis le domaine, dans le rÃ©pertoire &laquo;&nbsp;blog&nbsp;&raquo; si WordPress est accessible via une adresse du type : http://votredomaine/blog/.</li>
<li>Connectez-vous Ã  l&#8217;interface d&#8217;administration de la version prÃ©cÃ©dente et modifiez dans les options gÃ©nÃ©rales l&#8217;adresse WordPress  : il suffit de reprendre l&#8217;adresse du blog et de coller Ã  la fin le nom du rÃ©pertoire de la nouvelle version (ici v2)</li>
<li>PrÃ©parez en local un fichier index.php qui contient le code suivant :
<pre><code class="php">&lt;?php /* Short and sweet */
define('WP_USE_THEMES', true);
require('./v2/wp-blog-header.php');
?&gt;</code></pre>
<p>v2 doit correspondre au nom du rÃ©pertoire qui contient la nouvelle version.</li>
</ol>
</li>
<li>Bascule
<ol>
<li>Connectez-vous Ã  l&#8217;interface d&#8217;administration de la nouvelle version pour mettre Ã  jour la base de donnÃ©es</li>
<li>Chargez le fichier index.php de l&#8217;Ã©tape 2 dans le dossier pÃ¨re de la nouvelle version</li>
</ol>
</li>
</ol>
<p>C&#8217;est fini. De plus de cette faÃ§on, vous avez placÃ© la nouvelle version wordpress dans son propre rÃ©pertoire ce qui a pour vertu de l&#8217;isoler du reste de votre site. Avantage : seule l&#8217;Ã©tape 3 Ã©tant cruciale, vous pouvez prÃ©parez les autres Ã©tapes sur des mois.</p>
<p>Vous me direz qu&#8217;entre les Ã©tapes 3.1 et 3.2, vous allez vous retrouvÃ© dans la situation <a href="#bourrin">de la mÃ©thode bourrin</a> oÃ¹ la version prÃ©cÃ©dente manipule un modÃ¨le de donnÃ©es diffÃ©rent de celui pour lequel elle a Ã©tÃ© construite. Certes rien ne vous empÃªche de passer par l&#8217;astuce du <a href="#malin">malin</a> et de rediriger vos visiteurs vers un page de maintenance en indiquant de revenir dans la seconde, mais le temps de bascule est rÃ©duit Ã  son minimum. Cette opÃ©ration ne doit pas vous prendre plus de quelques secondes, soit le temps de passer de votre navigateur Ã  votre client FTP.</p>
<p>A moins que vous ne fassiez cette opÃ©ration depuis une ligne GSM&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://z720.net/blog/archives/2007/01/19/migration-wordpress-en-un-clin-doeil/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>WordPress 2.1 RC1 et Dashbar</title>
		<link>http://z720.net/blog/archives/2007/01/18/wordpress-21-rc1-et-dashbar</link>
		<comments>http://z720.net/blog/archives/2007/01/18/wordpress-21-rc1-et-dashbar#comments</comments>
		<pubDate>Thu, 18 Jan 2007 08:30:11 +0000</pubDate>
		<dc:creator>Seb</dc:creator>
				<category><![CDATA[DÃ©veloppement]]></category>
		<category><![CDATA[DashBar]]></category>
		<category><![CDATA[Projets]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://v05.z720.net/blog/archives/2007/01/18/wordpress-21-rc1-et-dashbar</guid>
		<description><![CDATA[Rapidement : comme Ryan a annoncÃ© la sortie de la premiÃ¨re release candidate de WordPress 2.1. Je peux aussi vous annoncÃ© que DashBar est compatible. J&#8217;ai fait quelques tests ce matin, aprÃ¨s avoir fraichement installÃ© la RC1 (tÃ©lÃ©chargeable ici). Je &#8230; <a href="http://z720.net/blog/archives/2007/01/18/wordpress-21-rc1-et-dashbar">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Rapidement : comme <a href="http://boren.nu/archives/2007/01/17/wordpress-21-release-candidate-1/">Ryan a annoncÃ© la sortie de la premiÃ¨re release candidate</a> de <a href="http://wordpress.org">WordPress</a> 2.1. Je peux aussi vous annoncÃ© que <a href="/produits/wordpress/dashbar/">DashBar</a> est compatible.</p>
<p><span id="more-208"></span></p>
<p>J&#8217;ai fait quelques tests ce matin, aprÃ¨s avoir fraichement installÃ© la RC1 (<a href="http://wordpress.org/beta/wordpress-2.1-RC1.zip">tÃ©lÃ©chargeable ici</a>). Je n&#8217;ai pas testÃ© la localisation mais il n&#8217;y a pas de raison que cela ne fonctionne pas.</p>
<p>Cette nouvelle version n&#8217;apporte pas grand chose de plus, si ce n&#8217;est quelques petites fonctionnalitÃ©s, trÃ¨s intÃ©ressantes. Principalement, celle qui permet de remplacer la page d&#8217;accueil par une page et une page par la liste des articles, ayant pour consÃ©quence directe de <a href="http://v05.z720.net/blog/archives/2006/10/12/separer-son-site-et-son-weblog-propulse-par-wordpress">rendre obsolÃ¨te mon article sur le sujet</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://z720.net/blog/archives/2007/01/18/wordpress-21-rc1-et-dashbar/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Patch DashBar v2</title>
		<link>http://z720.net/blog/archives/2006/12/08/patch-dashbar-v2</link>
		<comments>http://z720.net/blog/archives/2006/12/08/patch-dashbar-v2#comments</comments>
		<pubDate>Fri, 08 Dec 2006 11:46:57 +0000</pubDate>
		<dc:creator>Seb</dc:creator>
				<category><![CDATA[DÃ©veloppement]]></category>
		<category><![CDATA[DashBar]]></category>
		<category><![CDATA[Goodies]]></category>
		<category><![CDATA[Projets]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://v05.z720.net/blog/archives/2006/12/08/patch-dashbar-v2</guid>
		<description><![CDATA[Suite Ã  la remarque trÃ¨s constructive de imasubmarine dans les commentaires du billet d&#8217;annonce de la sortie de la version 2.0 du plugin DashBar pour WordPress. Voici dÃ©jÃ  un premier correctif. Dans la barre le lien vers le gestionnaire de &#8230; <a href="http://z720.net/blog/archives/2006/12/08/patch-dashbar-v2">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Suite Ã  <a href="http://v05.z720.net/blog/archives/2006/11/16/dashbar-v20#comment-541" title="Aller lire le commentaire">la remarque trÃ¨s constructive de imasubmarine dans les commentaires</a> du billet d&#8217;annonce de la sortie de la version 2.0 du plugin DashBar pour WordPress. Voici dÃ©jÃ  un premier correctif.</p>
<p>Dans la barre le lien vers le gestionnaire de liens dans l&#8217;administration n&#8217;Ã©tait pas le bon, c&#8217;est maintenant rÃ©parÃ©. Je pense que ceux qui utilisent le gestionnaire de lien, n&#8217;ont pas attendu pour faire la correction eux-mÃªme. Mais au moins on part sur des bases saines pour la futures versions.</p>
<p><a href="http://v05.z720.net/produits/wordpress/dashbar/" title="TÃ©lÃ©charger DashBar pour WordPress">La nouvelle version est donc disponible Ã  la mÃªme adresse que d&#8217;habitude.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://z720.net/blog/archives/2006/12/08/patch-dashbar-v2/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>DashBar en chinois</title>
		<link>http://z720.net/blog/archives/2006/11/21/dashbar-en-chinois</link>
		<comments>http://z720.net/blog/archives/2006/11/21/dashbar-en-chinois#comments</comments>
		<pubDate>Tue, 21 Nov 2006 21:21:57 +0000</pubDate>
		<dc:creator>Seb</dc:creator>
				<category><![CDATA[DÃ©veloppement]]></category>
		<category><![CDATA[DashBar]]></category>
		<category><![CDATA[Projets]]></category>
		<category><![CDATA[Traductions]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://v05.z720.net/blog/archives/2006/11/21/dashbar-en-chinois</guid>
		<description><![CDATA[Le plugin DashBar s&#8217;attaque Ã  la Chine&#8230; Merci Ã  Mimosa pour sa traduction en chinois simplfiÃ©e du plugin.]]></description>
			<content:encoded><![CDATA[<p>Le <a href="http://v05.z720.net/produits/wordpress/dashbar/">plugin DashBar</a> s&#8217;attaque Ã  la Chine&#8230; Merci Ã  <a href="http://www.shareday.com">Mimosa</a> pour sa <a href="http://www.shareday.com/blog/wp-content/plugins/DashBar/" title="TÃ©lÃ©charger la localisation chnoise du plugin DashBar">traduction en chinois simplfiÃ©e du plugin</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://z720.net/blog/archives/2006/11/21/dashbar-en-chinois/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DashBar v2.0</title>
		<link>http://z720.net/blog/archives/2006/11/16/dashbar-v20</link>
		<comments>http://z720.net/blog/archives/2006/11/16/dashbar-v20#comments</comments>
		<pubDate>Thu, 16 Nov 2006 21:36:10 +0000</pubDate>
		<dc:creator>Seb</dc:creator>
				<category><![CDATA[DÃ©veloppement]]></category>
		<category><![CDATA[DashBar]]></category>
		<category><![CDATA[Goodies]]></category>
		<category><![CDATA[Projets]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://v05.z720.net/blog/archives/2006/11/16/dashbar-v20</guid>
		<description><![CDATA[L&#8217;accouchement a eu lieu dans la douleur mais la version 2 du plugin DashBar est enfin disponible. N&#8217;hÃ©sitez pas la tÃ©lÃ©charger&#8230; Concernant les fonctionnalitÃ©s nouvelles, il y en a principalement deux : Plus de fonctions sont accÃ©ssibles depuis la barre &#8230; <a href="http://z720.net/blog/archives/2006/11/16/dashbar-v20">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>L&#8217;accouchement a eu lieu dans la douleur mais la <a href="http://v05.z720.net/produits/wordpress/dashbar/" title="Page officielle du plugin DashBar">version 2 du plugin DashBar</a> est enfin disponible. N&#8217;hÃ©sitez pas la tÃ©lÃ©charger&#8230;
</p>
<p>Concernant les fonctionnalitÃ©s nouvelles, il y en a principalement deux :</p>
<ul>
<li>Plus de fonctions sont accÃ©ssibles depuis la barre et ces fonctions ne s&#8217;affichent que si l&#8217;utilisateur a les droits apropriÃ©s</li>
<li>Le style est totalement paramÃ©trables : la couleur de fond, du texte, ainsi que la position gauche ou droite et la taille du texte (et donc de la barre)</li>
</ul>
<p>N&#8217;hÃ©sitez pas Ã  faire vos remarques ici dans les commentaires. Je pense avoir pris en compte <a href="http://wordpress-fr.net/support/viewtopic.php?id=728" title="Voir le sujet DashBar sur le forum wordpress-fr">vos remarques sur le forum wordpress-fr</a>&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://z720.net/blog/archives/2006/11/16/dashbar-v20/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Du neuf avec du vieux : balise button</title>
		<link>http://z720.net/blog/archives/2006/10/16/du-neuf-avec-du-vieux-balise-button</link>
		<comments>http://z720.net/blog/archives/2006/10/16/du-neuf-avec-du-vieux-balise-button#comments</comments>
		<pubDate>Mon, 16 Oct 2006 10:10:48 +0000</pubDate>
		<dc:creator>Seb</dc:creator>
				<category><![CDATA[DÃ©veloppement]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://v05.z720.net/blog/archives/2006/10/16/du-neuf-avec-du-vieux-balise-button</guid>
		<description><![CDATA[GrÃ¢ce au Digital Web Magazine, je viens de dÃ©couvrir une nouvelle balise HTML, la balise button. Je me suis alors rendu compte que cette balise n&#8217;Ã©tait pas du tout nouvelle. Par contre elle est trÃ¨s peu employÃ©e, et je me &#8230; <a href="http://z720.net/blog/archives/2006/10/16/du-neuf-avec-du-vieux-balise-button">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>GrÃ¢ce au <a href="http://www.digital-web.com/articles/push_my_button/" title="Voir l'article Push my button sur Digital Web Magazine (anglais)">Digital Web Magazine</a>, je viens de dÃ©couvrir une nouvelle balise HTML, la balise <code>button</code>. Je me suis alors rendu compte que cette balise n&#8217;Ã©tait pas du tout nouvelle. Par contre elle est trÃ¨s peu employÃ©e, et je me demande pourquoi&nbsp;? Effectivement, cette balise fonctionne totalement diffÃ©remment de la balise <code>input</code> et a bien des avantages. </p>
<p><span id="more-202"></span>
<p>Le premier vient du fait qu&#8217;il ne s&#8217;agit d&#8217;une balise vide comme input qui porte le texte du bouton dans un attribut. Il est donc possible de faire des boutons avec des contenus complexes, alors que la balise <code>input</code> ne permet que de prÃ©senter une chaÃ®ne de caractÃ¨res. </p>
<pre><code>&lt;input type="submit" value="Envoyer votre rÃ©ponse" /&gt;</code></pre>
<pre><code>&lt;button type="submit"&gt;&lt;strong&gt;Envoyer&lt;/strong&gt; votre rÃ©ponse&lt;/button&gt;</code></pre>
<p>Autre avantage, il est possible de passer une valeur de paramÃ¨tre diffÃ©rente du texte du bouton:
</p>
<pre><code>&lt;button type='submit' name='action' value='1'&gt;Ajouter&lt;/button&gt;
&lt;button type='submit' name='action' value='2'&gt;Supprimer&lt;/button&gt;
</code></pre>
<p>Cette balise permet dâ€™utiliser nâ€™importe quelle balise dans le contenu exceptÃ©s les liens et d&#8217;autres contrÃ´les de formulaire bien entendu. De plus les navigateurs n&#8217;impose pas de style prÃ©dÃ©fini pour la balise button Ã  l&#8217;instar de la balise input qui reprend un style peu joyeux d&#8217;interface utilisateur &laquo;&nbsp;classique&nbsp;&raquo;. Il devient beaucoup plus aisÃ© de faire coÃ¯ncider le design du formulaire avec celui du site, voir mÃªme de s&#8217;affranchir du bouton valider.
</p>
<p><a href="http://www.digital-web.com/about/contributors/aaron_gustafson/" title="En savoir plus sur Aaron Gustafson : contributeur Digital Web Magazine">Aaron Gustafson</a> donne de <a href="http://www.digital-web.com/articles/push_my_button/">beaux exemples d&#8217;utilisations de cette balise <code>button</code></a> :
</p>
<ul>
<li><a href="http://www.digital-web.com/extras/push_my_button/example_1/index.html">Transformer un formulaire pour qu&#8217;il ne ressemble pas Ã  un formulaire</a> (choix entre plusieurs cadeaux)</li>
<li><a href="http://www.digital-web.com/extras/push_my_button/example_2/index.html">Application pour la vente d&#8217;hÃ©bergement</a></li>
<li><a href="http://www.digital-web.com/extras/push_my_button/example_3/index.html">Application pour une gestion de la pagination</a>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://z720.net/blog/archives/2006/10/16/du-neuf-avec-du-vieux-balise-button/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SÃ©parer son site et son weblog propulsÃ© par WordPress</title>
		<link>http://z720.net/blog/archives/2006/10/12/separer-son-site-et-son-weblog-propulse-par-wordpress</link>
		<comments>http://z720.net/blog/archives/2006/10/12/separer-son-site-et-son-weblog-propulse-par-wordpress#comments</comments>
		<pubDate>Thu, 12 Oct 2006 11:25:55 +0000</pubDate>
		<dc:creator>Seb</dc:creator>
				<category><![CDATA[DÃ©veloppement]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://v05.z720.net/blog/archives/2006/10/12/separer-son-site-et-son-weblog-propulse-par-wordpress</guid>
		<description><![CDATA[Le but de cet article est de permettre l&#8217;utilisation de WordPress comme un gestionnaire de contenu faisant apparaitre un site classique et un blog de maniÃ¨re distincte. Avec cette solution l&#8217;arborescence des pages WordPress sont visibles Ã  la racine du &#8230; <a href="http://z720.net/blog/archives/2006/10/12/separer-son-site-et-son-weblog-propulse-par-wordpress">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Le but de cet article est de permettre l&#8217;utilisation de WordPress comme un gestionnaire de contenu faisant apparaitre un site classique et un blog de maniÃ¨re distincte.</p>
<p><img src="http://v05.z720.net/blog/images/sitemap.png" alt="Exemple de plan du site" /></p>
<p>Avec cette solution l&#8217;arborescence des pages WordPress sont visibles Ã  la racine du site alors que les articles du blog apparaisse dans un dossier nommÃ© blog.</p>
<p><span id="more-200"></span></p>
<p>Pour donner au weblog son propre rÃ©pertoire dans l&#8217;arborescence des pages, il faut d&#8217;abord modifier les permaliens pour que les articles soient publiÃ©es dans un sous-rÃ©pertoire en changeant la structure pour faire apparaitre un sous rÃ©pertoire blog par exemple. La structure des permaliens devrait ressembler Ã  ceci :  <a>/blog/%year%/%monthnum%/%day%/%postname%</a>.</p>
<p>Ensuite vous pourrez remarquer que si vous allez Ã  l&#8217;adresse <a>http://www.votresite.com/blog</a> une erreur 404 va apparaitre. C&#8217;est parce que WordPress n&#8217;interprÃ¨te pas ce rÃ©pertoire comme l&#8217;accueil du weblog. Pour cela il faut ajouter une rÃ¨gle de redirection pour ce rÃ©pertoire en utilisant le filtre <code>rewrite_rules_array</code> qui permet d&#8217;ajouter des rÃ¨gles de redirections. Nous allons donc utiliser les point d&#8217;entrÃ©s fournis par WordPress pour les plugins.</p>
<p>Dans un thÃ¨me WordPress la page d&#8217;accueil du weblog utilise le gabarit <code>home.php</code> si celui-ci existe, sinon c&#8217;est le fichier <code>index.php</code> qui est utilisÃ©. Nous allons ajouter une rÃ¨gle permettant Ã  WordPress d&#8217;afficher un autre gabarit quand nous sommes sur l&#8217;accueil du site et de rediriger vers le gabarit de l&#8217;accueil classique du blog lorsque nous sommes dans notre rÃ©pertoire <a>/blog/</a>.</p>
<p>Pour cela il faut ajouter un fichier <code>functions.php</code> dans le thÃ¨me, si celui-ci n&#8217;existe pas dÃ©jÃ . Ainsi notre modification sera active pour notre thÃ¨me uniquement et ne sera pas dÃ©pendante de l&#8217;activation ou non d&#8217;un plugin. Cela Ã©vite les mauvaises manipulations et de voir notre mise en page totalement dÃ©sordonnÃ©es en cas de dÃ©sactivation du plugin ou de changement de thÃ¨me.</p>
<p>Il va falloir mettre en place 2 fonctions pour gÃ©rer cette fonctionnalitÃ© :</p>
<ul>
<li>la premiÃ¨re (<code>add_rules</code>) va permettre Ã  WordPress de<br />
    reconnaitre notre dossier <a>/blog/</a> en l&#8217;assimilant Ã  l&#8217;accueil de<br />
    la partie weblog
  </li>
<li>la seconde (<code>template_redirect</code>) va permettre Ã  WordPress<br />
    d&#8217;utiliser le fichier <code>homepage.php</code> comme gabarit de la<br />
    racine de notre site.
  </li>
</ul>
<p>Pour Ã©viter que nos fonctions entrent en collision avec celles de WordPress, celles-ci seront encapsulÃ©es dans une classe. De la mÃªme maniÃ¨re que <a title="Bien dÃ©velopper un plugin pour WordPress" href="http://v05.z720.net/blog/archives/2006/03/28/bien-developper-un-plugin-pour-wordpress">je le prÃ©conise pour les plugins</a>.</p>
<pre class="php"><code>  function add_rules($rules) {
// RÃ©cupÃ©ration des informations de redirections d'adresse
    global $wp_rewrite;
// GÃ©nÃ©ration des liens pour les commentaires, pagination, etc.
    $new_rules = $wp_rewrite-&gt;generate_rewrite_rules($wp_rewrite-&gt;front);
// GÃ©nÃ©rtation de la rÃ¨gle de redirection principale
    $global_home_rule = substr($wp_rewrite-&gt;front,1).'?';
    $new_rules[$global_home_rule] = "index.php";

// ajout des nouvelles rÃ¨gles de redirection
    $rules += $new_rules;
    return $rules;
  }

  function redirect() {
//RÃ©cupÃ©ration du contexte
    global $wp;
// S'il s'agit de l'accueil et de la racine du site charger le gabarit homepage.php
    if(is_home() and ($wp-&gt;matched_rule == '')) {
      if(file_exists(dirname(__FILE__).'/homepage.php')) {
        include(dirname(__FILE__).'/homepage.php');
      } else {
        include(get_query_template('homepage'));
      }
// La page est affichÃ©e on sort
      exit;
    }
  }
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://z720.net/blog/archives/2006/10/12/separer-son-site-et-son-weblog-propulse-par-wordpress/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plugin Akismet pour DotClear2 : recherche beta testeurs</title>
		<link>http://z720.net/blog/archives/2006/10/11/plugin-akismet-pour-dotclear2-recherche-beta-testeurs</link>
		<comments>http://z720.net/blog/archives/2006/10/11/plugin-akismet-pour-dotclear2-recherche-beta-testeurs#comments</comments>
		<pubDate>Wed, 11 Oct 2006 11:32:27 +0000</pubDate>
		<dc:creator>Seb</dc:creator>
				<category><![CDATA[DÃ©veloppement]]></category>
		<category><![CDATA[DotClear]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://v05.z720.net/blog/archives/2006/10/11/plugin-akismet-pour-dotclear2-recherche-beta-testeurs</guid>
		<description><![CDATA[Je dÃ©laisse quelque peu WordPress en ce moment pour me pencher sur DotClear2. Je ne vais pas faire de comparatif ici entre ces 2 plateformes qui, Ã  mon avis, ne se destinent pas du tout Ã  la mÃªme utilisation. En &#8230; <a href="http://z720.net/blog/archives/2006/10/11/plugin-akismet-pour-dotclear2-recherche-beta-testeurs">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Je dÃ©laisse quelque peu <a href="http://wordpress-fr.net/">WordPress</a> en ce moment pour me pencher sur <a href="http://preview.dotclear.net">DotClear2</a>. Je ne vais pas faire de comparatif ici entre ces 2 plateformes qui, Ã  mon avis, ne se destinent pas du tout Ã  la mÃªme utilisation. En Ã©tudiant DotClear2 j&#8217;ai pu apprÃ©cier la faÃ§on dont la bÃªte est admirablement bien codÃ©e : tout en objet en tirant profit de PHP5.</p>
<p><span id="more-199"></span>
<p>Sans vouloir dÃ©nigrer le travail de <a href="http://www.vanschklift.com/blog">biou</a> et <a href="http://zeubeubeu.net/blog/">zbb</a> qui ont apportÃ© Ã  DotClear <a href="http://zeubeubeu.net/blog/plugins-dotclear#spamplemousse">le plugin antispam Spamplemousse</a> qui manquait terriblement Ã  DotClear, je me suis penchÃ© sur l&#8217;intÃ©gration de l&#8217;API <a href="http://www.akismet.com">Akismet</a>. Pour moi, il s&#8217;agit de 2 mÃ©thodes de dÃ©tection des spams qui sont complÃ©mentaires et qui peuvent coexister sur le mÃªme blog. De plus </p>
<p>J&#8217;ai quasiment fini le plugin pour DotClear2, et je recherche donc quelques beta-testeurs volontaires pour utiliser ce plugin sur un ou plusieurs de leur blog sous DotClear2.</p>
<h2>FonctionnalitÃ©s du plugin :</h2>
<ul>
<li>Activation du plugin pour chaque blog</li>
<li>DÃ©tection des spams Ã  la soumission des commentaires et des trackbacks via le systÃ¨me de dÃ©tection d&#8217;Akismet.</li>
<li>Soumission  Ã  Akismet des spams non dÃ©tectÃ©s et des commentaires dÃ©tectÃ©s injustement comme spam car le systÃ¨me peut apprendre de ses erreurs.</li>
<li>PossibilitÃ© d&#8217;activer une suppression automatique des spams aprÃ¨s un certains nombre de jours, paramÃ©trable par l&#8217;administrateur du blog.</li>
<li>SystÃ¨me de log pour le super administrateur.</li>
<li>Gestion des droits pour le paramÃ©trage du plugin.</li>
<li>Affichage d&#8217;une liste des spams.</li>
</ul>
<p>Si vous Ãªtes intÃ©ressÃ©s pour tester ce plugin, contactez-moi via les commentaires de cet article. De mÃªme si vous avez des questions, laissez un commentaire.</p>
]]></content:encoded>
			<wfw:commentRss>http://z720.net/blog/archives/2006/10/11/plugin-akismet-pour-dotclear2-recherche-beta-testeurs/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Bien dÃ©velopper un plugin pour WordPress</title>
		<link>http://z720.net/blog/archives/2006/03/28/bien-developper-un-plugin-pour-wordpress</link>
		<comments>http://z720.net/blog/archives/2006/03/28/bien-developper-un-plugin-pour-wordpress#comments</comments>
		<pubDate>Tue, 28 Mar 2006 19:07:37 +0000</pubDate>
		<dc:creator>Seb</dc:creator>
				<category><![CDATA[DÃ©veloppement]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://v05.z720.net/blog/archives/2006/03/28/bien-developper-un-plugin-pour-wordpress</guid>
		<description><![CDATA[WordPress est Ã©tonnant de simplicitÃ© lorsqu&#8217;il s&#8217;agit de dÃ©velopper de nouveaux plugins. Cependant, il convient de suivre un certains nombre de bonnes pratiques. Quelques bonnes pratiques Encapsuler ses functions dans une classe afin de complÃ¨tement isoler le fonctionnement du plugin &#8230; <a href="http://z720.net/blog/archives/2006/03/28/bien-developper-un-plugin-pour-wordpress">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>WordPress est Ã©tonnant de simplicitÃ© lorsqu&#8217;il s&#8217;agit de dÃ©velopper de nouveaux plugins. Cependant, il convient de suivre un certains nombre de bonnes pratiques.</p>
<h2>Quelques bonnes pratiques</h2>
<ul>
<li>Encapsuler ses functions dans une classe afin de complÃ¨tement isoler le fonctionnement du plugin de WordPress. Cela Ã©vite les conflits de variables, de nom de fonction, etc.</li>
<li>Penser Ã  l&#8217;internationalisation du code en utilisant les fonctions <code>__()</code> et <code>_e()</code> et dÃ©clarer un domaine pour votre plugin.</li>
<li>Penser Ã  documenter l&#8217;utilisation du plugin : rÃ©diger une page de mode d&#8217;emploi que l&#8217;on affichera ensuite par le menu plugins &gt; aide plugin X</li>
<li>N&#8217;utilisez pas n&#8217;importe quel &laquo;&nbsp;hook&nbsp;&raquo;, mais assurez-vous qu&#8217;il correspond bien Ã  votre usage.</li>
</ul>
<p><span id="more-133"></span></p>
<h2>Un modÃ¨le de squelette de plugin</h2>
<p>Dans le squelettes suivant, je vous propose un petit coup de pouce pour mettre en place vos plugins. Copiez ce code dans un nouveau fichier et crÃ©ez votre plugin&#8230;</p>
<p>Dans l&#8217;exemple proposÃ©, le plugin va ajoutÃ© Ã  la fin de chaque billet le nom du plugin. Cen&#8217;est pas trÃ¨s utile mais Ã§a permet de faire un exemple.</p>
<pre class="php">
<code>
/*
Plugin Name: Nom du Plugin
Plugin URI: http://www.example.com/votre_plugin
Description: Ce que fait votre plugin en quelques mots.
Version: 1.0
Author: Votre Nom
Author URI:  http://www.example.com
*/

/*
Squelete de plugin : Mode d'emploi

1. Remplir le cartouche en dÃ©but de fichier, ce sont les informations qui apparaissent dans la description du plugin dans WordPress
2. Remplacer {{VotrePlugin}} par le nom de votre plugin composÃ© de lettres (sans accents), chiffre, underscore (_)
3. Ajouter vos fonctions dans la partie Ã  Ã©diter
4. GÃ©rer le contenu de la page d'aide de votre plugin (fonction AdminHelpPage)
5. (facultatif) GÃ©rer l'installation options de paramÃ©trage, tables... (fonction install)

*/

class {{VotrePlugin}} {
  var $domain = '';
  var $version = '1.0'; //Changer pour correspondre Ã  la version courante
  var $option_ns = '';
  var $options = array();

// Raccourci interne pour ajouter des actions
  function add_action($nom, $num = 0) {
    $hook = $nom;
    $fonction = $nom;
    if(!$num) { $fonction .= $num; }
    add_action($hook, array(&#038;$this, 'action_'.$nom));
  }

  function {{VotrePlugin}}() {
// Initialisation des variables
     if ($this->domain == '') $this->domain = get_class($this);
     if ($this->option_ns == '') $this->option_ns = get_class($this);
// RÃ©cupÃ©ration des options
		$this->options = get_option($this->option_ns);

// Doit-on lancer l'installation ?
    if(!isset($this->options['install']) or ($this->options['install'] != $this->version))
    	$this->install();

//Charger les donnÃ©es de localisation
    load_plugin_textdomain($this->domain); 

// gestion automatique des actions
		foreach(get_class_methods(get_class($this)) as $methode) {
			if(substr($methode, 0, 7) == 'action_') {
				$this->add_action(substr($methode, 7));
			}
		}		

  }      

  function action_admin_menu() {
    if (function_exists('add_submenu_page')) {
      add_submenu_page('plugins.php',
                       __('{{VotrePlugin}}', $this->domain),
                       __('{{VotrePlugin}}', $this->domain),
                       3,
                       basename(__FILE__),
                       array(&#038;$this, 'AdminHelpPage'));
    }
  }

  function set($option, $value) {
  	$this->options[$option] = $value;
  }

  function get($option) {
  	if (isset($this->options[$option])) {
  		return $this->options[$option];
  	} else {
  		return false;
  	}
  }

  function update_options() {
  	return update_option($this->option_ns, $this->options);
  }

//---------------------------------------------
// Editez Ã  partir d'ici
//---------------------------------------------

  function install() {
// Fonction permettant l'installation de votre plugin (crÃ©ation de tables, de paramÃ¨tres...)
		$this->set('install', $this->version);
		$this->set('page', 0);
		$this->update_options();
  }

  function AdminHelpPage() {
  	echo '
<div class="wrap">Page d'admin de votre plugin</div>

';
  }

  function action_wp_title($titre) {
  	return $titre.' (on stÃ©roÃ¯d)';
  }

//---------------------------------------------
// Fin de la partie d'Ã©dition
//---------------------------------------------

}

$inst_{{VotrePlugin}} = new {{VotrePlugin}}();

</code>
</pre>
<p>Dans la partie Ã©dition, il suffit de crÃ©er de nouvelles mÃ©thodes <code>action_</code>&laquo;&nbsp;nom du hook&nbsp;&raquo; pour que celles-ci soient automatiquement enregistrÃ©es et exÃ©cutÃ©es par WordPress. De plus il est facile de gÃ©rer les options de votre plugin parmi les options de WordPress en utilisant les mÃ©thodes <code>get</code>, <code>set</code> et <code>update_options</code></p>
<p>N&#8217;hÃ©sitez pas Ã  faire vos remarques dans les commentaires.</p>
<p><a href="/FileSharing/WordPress/SquelettePlugin.txt">TÃ©lÃ©charger le squelette</a></p>
<h2>Ressources connexes</h2>
<p>Pour vous aider Ã  crÃ©er vos propres plugins, n&#8217;hÃ©sitez pas Ã  consulter :</p>
<ul>
<li><a href="http://codex.wordpress.org/Writing_a_Plugin">Ecrire un plugin (en anglais)</a></li>
<li><a href="http://codex.wordpress.org/Plugin_API">Plugin API (en anglais)</a></li>
<li><a href="http://wphooks.flatearth.org/">Hook Database : documentation des points de branchement des plugins (en anglais)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://z720.net/blog/archives/2006/03/28/bien-developper-un-plugin-pour-wordpress/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Annonce : Plugin DashBar v1.0</title>
		<link>http://z720.net/blog/archives/2005/12/14/plugin_dashbar_v1</link>
		<comments>http://z720.net/blog/archives/2005/12/14/plugin_dashbar_v1#comments</comments>
		<pubDate>Wed, 14 Dec 2005 07:30:18 +0000</pubDate>
		<dc:creator>Seb</dc:creator>
				<category><![CDATA[DÃ©veloppement]]></category>
		<category><![CDATA[DashBar]]></category>
		<category><![CDATA[Projets]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://v05.z720.net/blog/archives/2005/12/14/plugin_dashbar_v1</guid>
		<description><![CDATA[J&#8217;avais trouvÃ© trÃ¨s utile la barre de navigation permettant de basculer de l&#8217;interface d&#8217;administration aux diffÃ©rents sites sur WordPress.com. C&#8217;est trÃ¨s pratique, mÃªme si certaines fonctionnalitÃ©s ne sont pas utiles sur les autres sites utilisant WordPress (invitation, permettre Ã  un &#8230; <a href="http://z720.net/blog/archives/2005/12/14/plugin_dashbar_v1">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>J&#8217;avais trouvÃ© trÃ¨s utile la barre de navigation permettant de basculer de l&#8217;interface d&#8217;administration aux diffÃ©rents sites sur <a href="http://wordpress.com">WordPress.com</a>. C&#8217;est trÃ¨s pratique, mÃªme si certaines fonctionnalitÃ©s ne sont pas utiles sur les autres sites utilisant WordPress (invitation, permettre Ã  un autre utilisateur de participer Ã  son site,&#8230;)</p>
<p>Le plugin DashBar sert donc Ã  avoir toujours sous la main les liens importants liÃ©s Ã  l&#8217;activitÃ© du site et Ã  la maintenance des articles et pages.</p>
<p><span id="more-149"></span></p>
<p>Elle permet pour les utilisateurs identifiÃ©s de voir apparaitre une barre d&#8217;administration similaire Ã  celle prÃ©sente sur WordPress.com offrant ainsi un accÃ¨s direct:</p>
<ul>
<li>au tableau de bord</li>
<li>au formulaire d&#8217;Ã©criture d&#8217;article</li>
<li>Ã  la modification des articles prÃ©sents sur la page</li>
<li>Ã  la modÃ©ration des commentaires</li>
<li>Ã  son profile d&#8217;utilisateur WordPress</li>
<li>au lien de dÃ©connexion</li>
</ul>
<p>Tous les dÃ©tails sur <a href="http://v05.z720.net/produits/wordpress/dashbar" title="Le plugin DashBar sert Ã  avoir toujours sous la main les liens importants liÃ©s Ã  l'activitÃ© du site et Ã  la maintenance des articles et pages.">la page officielle du plugin DashBar pour WordPress</a></p>
<p>Ce plugin a Ã©tÃ© testÃ© sur ce site en version 1.5.2 (Ã  l&#8217;heure actuelle) mais il a aussi Ã©tÃ© testÃ© sur la version 2.0RC1 de WordPress. <strong>ProblÃ¨me connu</strong> : ProblÃ¨me de taille de la barre sous Internet Explorer mais je ne connais que trÃ¨s peu de personnes que cela pourrait gÃªner</p>
<p>La dÃ©pose d&#8217;un commentaire sur cette page fait office de ticket si vous rencontrez des problÃ¨mes, merci de prÃ©ciser sous quelle version de WordPress et avec quel thÃ¨me le problÃ¨me est rencontrÃ©. </p>
]]></content:encoded>
			<wfw:commentRss>http://z720.net/blog/archives/2005/12/14/plugin_dashbar_v1/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

