<?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>WebDesign &#38; WebConsulting</description>
	<lastBuildDate>Wed, 11 Nov 2009 08:36:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</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 pour un site productif ? Par site productif, j&#8217;entends bien évidement un site accessible à [...]]]></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[DashBar]]></category>
		<category><![CDATA[Développement]]></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 n&#8217;ai pas testé la localisation mais il n&#8217;y a pas de raison que cela ne [...]]]></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[DashBar]]></category>
		<category><![CDATA[Développement]]></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 liens dans l&#8217;administration n&#8217;était pas le bon, c&#8217;est maintenant réparé. Je pense que ceux qui [...]]]></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[DashBar]]></category>
		<category><![CDATA[Développement]]></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[DashBar]]></category>
		<category><![CDATA[Développement]]></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 et ces fonctions ne s&#8217;affichent que si l&#8217;utilisateur a les droits apropriés Le style est [...]]]></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[Design]]></category>
		<category><![CDATA[Développement]]></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 demande pourquoi&#160;? Effectivement, cette balise fonctionne totalement différemment de la balise input et a bien [...]]]></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 site alors que les articles du blog apparaisse dans un dossier nommé blog. Pour donner [...]]]></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[DotClear]]></category>
		<category><![CDATA[Développement]]></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 étudiant DotClear2 j&#8217;ai pu apprécier la façon dont la bête est admirablement bien codée : [...]]]></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 de WordPress. Cela évite les conflits de variables, de nom de fonction, etc. Penser à [...]]]></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[DashBar]]></category>
		<category><![CDATA[Développement]]></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 autre utilisateur de participer à son site,&#8230;) Le plugin DashBar sert donc à avoir toujours [...]]]></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>
