<?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>NightAngel &#187; WordPress</title>
	<atom:link href="http://www.nightangel.fr/category/programmation-developpement/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nightangel.fr</link>
	<description>Les mythiques mésaventures de NightAngel : ma vie, mes passions, mes photos, mes délires et plus si affinités...</description>
	<lastBuildDate>Tue, 07 Feb 2012 00:26:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>WordPress &amp; Amazon S3 (Simple Storage Service)</title>
		<link>http://www.nightangel.fr/wordpress-amazon-s3-simple-storage-service/</link>
		<comments>http://www.nightangel.fr/wordpress-amazon-s3-simple-storage-service/#comments</comments>
		<pubDate>Fri, 05 Nov 2010 02:16:01 +0000</pubDate>
		<dc:creator>NightAngel</dc:creator>
				<category><![CDATA[Informaticus]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Amazon S3]]></category>
		<category><![CDATA[Amazon S3 for WordPress]]></category>
		<category><![CDATA[Amazon S3 Organizer]]></category>
		<category><![CDATA[Bind]]></category>
		<category><![CDATA[CNAME]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[Mozilla Firefox]]></category>
		<category><![CDATA[Panic]]></category>
		<category><![CDATA[Panic Transmit]]></category>
		<category><![CDATA[Simple Storage Service]]></category>
		<category><![CDATA[Transmit]]></category>
		<category><![CDATA[vhost]]></category>
		<category><![CDATA[Virtual Host]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WP S3 Backups]]></category>

		<guid isPermaLink="false">http://www.nightangel.fr/?p=5415</guid>
		<description><![CDATA[<p><img width="720" height="480" src="http://medias.nightangel.fr/2010/11/wordpress-amazon-s3-storage.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress-amazon-s3-storage" title="wordpress-amazon-s3-storage" /></p>Aujourd'hui c'est la fin des brebis ! OK la prochaine fois je trouverai une rime un peu moins douteuse, c'est promis. Quoiqu'il en soit nous allons voir de quelle manière il est possible de combiner <a href="http://fr.wordpress.org/" target="_blank"><strong>WordPress</strong></a> avec le service de stockage <strong><a href="http://aws.amazon.com/s3/" target="_blank">Amazon S3</a></strong> ; qui fait tant parler de lui (en bien) ces derniers temps. L'idée étant donc de stocker sur leurs serveurs distants, les médias (photos, vidéos, etc) affichés sur votre blog. L'intérêt premier est de ne pas surcharger votre hébergement web, tant au niveau de l'espace de stockage que des ressources serveur. A noter que les avantages sont multiples puisque <a href="http://aws.amazon.com/s3/#requirements" target="_blank">Amazon S3 reste simple, modulable, fiable, rapide et relativement économique</a>. De plus l'excellente compatibilité avec le logiciel <strong><a href="http://www.panic.com/transmit/" target="_blank">Transmit</a></strong> n'est pas à négliger. Stoppons le <em>blabla</em> puisque je ne suis pas là pour vous convaincre, seule la partie technique nous intéresse.<span id="more-5415"></span>

<h1>Ce dont vous avez besoin</h1>

1 - Le plugin <strong><a href="http://wordpress.org/extend/plugins/tantan-s3/" target="_blank">Amazon S3 for WordPress</a></strong> pour combiner WordPress avec le service Amazon S3. Il existe également le plugin <strong>WP S3 Backups</strong> qui permet d'effectuer des sauvegardes mais vous n'en avez pas besoin pour héberger vos images ; il n'en reste pas moins très pratique.

2 - Le plugin <a href="https://addons.mozilla.org/en-US/firefox/addon/3247/" target="_blank"><strong>Amazon S3 Organizer</strong> (anciennement S3Fox)</a> pour Firefox. Il doit exister des plugins équivalents pour d'autres navigateurs mais tenons-nous en à Firefox dans le cas présent. Les étapes décrites dans "Configurer votre compte Amazon S3" peuvent aussi être réalisées avec Transmit ou n'importe quel autre logiciel "Amazon S3 friendly".

3 - Un compte <strong>Amazon S3</strong> : vous pouvez <a href="http://aws-portal.amazon.com/gp/aws/developer/subscription/index.html?productCode=AmazonS3" target="_blank">vous inscrire</a> ou <a href="https://console.aws.amazon.com/ec2/home" target="_blank">vous connecter</a>. Il est quand même important de bien comprendre le fonctionnement <a href="http://aws.amazon.com/s3/#pricing" target="_blank">des grilles tarifaires</a> avant d'aller plus loin. A noter qu'un <a href="http://calculator.s3.amazonaws.com/calc5.html" target="_blank">simulateur tarifaire</a> vous permet de savoir assez rapidement à quoi vous en tenir.

<a href="http://aws.amazon.com/s3/#pricing" target="_blank"><img src="http://medias.nightangel.fr/2010/11/amazon-s3-price-pricing-tarifs.png" alt="" title="amazon-s3-price-pricing-tarifs" width="724" height="509" class="aligncenter size-full wp-image-5417" /></a>

<h1>Configurer votre compte Amazon S3</h1>

1 - Une fois le plugin installé et Firefox redémarré, allez dans le menu <em>Outils -> S3 Organizer</em> pour une version "plein écran" ou sur l'icône en bas à droite pour une version réduite et plus limitée (peu importe) et cliquez sur "Manage Accounts".

<img src="http://medias.nightangel.fr/2010/11/amazon-s3-organizer.png" alt="" title="amazon-s3-organizer" width="720" height="518" class="aligncenter size-full wp-image-5420" />

2 - <a href="https://addons.mozilla.org/en-US/firefox/addon/3247/" target="_blank"><strong>Amazon S3 Organizer</strong></a> a besoin de trois paramètres pour accéder à votre compte Amazon : Account Name (nom du compte), Access Key (clé d'accès) et Secret Key (clé secrète).

<img src="http://medias.nightangel.fr/2010/11/s3-account-manager-amazon.png" alt="" title="s3-account-manager-amazon" width="367" height="432" class="aligncenter size-full wp-image-5419" />

Vous trouverez toutes ces informations dans la section <a href="https://aws-portal.amazon.com/gp/aws/developer/account/index.html?ie=UTF8&action=access-key" target="_blank"><strong>Security Credentials</strong></a> de votre compte ; vous n'aurez plus qu'à les copier/coller.

<img src="http://medias.nightangel.fr/2010/11/amazon-s3-access-credentials.png" alt="" title="amazon-s3-access-credentials" width="717" height="634" class="aligncenter size-full wp-image-5418" />

3 - Une fois que vous êtes connectés, il faut simplement cliquer sur le bouton "create directory" (icône bleue avec une étoile dorée) et nommer votre "bucket". Dans le cas du présent blog nous appellerions le <em>bucket</em> "images.nightangel.fr" par exemple.

<h1>Configurer Amazon S3 for WordPress</h1>

1 - Dans le panneau d'administration de WordPress, cliquez sur "Amazon S3" dans "Réglages". Rien de compliqué au niveau des deux premiers champs : saisissez la clé d'accès (access key) et la clé secrète (secret key). Ensuite vous choisissez le "bucket" puis...

<blockquote>- <strong>Host name settings</strong> : cliquez cette option si vous voulez que l'adresse de vos images soit sous la forme images.nightangel.fr et non images.nightangel.fr.s3.amazonsomething.com. Toutefois, si vous optez pour cette option, il vous faudra mettre en place un CNAME sur votre domaine : nous verrons ça plus bas.
- <strong>File Uploads</strong> : cochez cette case si vous voulez que tous les médias déjà envoyés sur WordPress soient copiés sur votre compte S3. Le plugin vous donne la possibilité de choisir un stockage sur votre serveur ou sur votre compte Amazon.
- <strong>Expires Header</strong> : mise en cache des fichiers.
- <strong>File Permissions</strong> : vous devez absolument vérifier les permissions sinon vos images ne seront pas accessibles au public. En effet, par défaut les fichiers envoyés sur votre compte Amazon S3 sont privés. Cette option vous évitera de devoir gérer les permissions de chaque nouveau fichier envoyé.</blockquote>

2 - Cliquez sur "save" et c'est tout ce qu'il y a à faire. 

<h2>Facultatif : Virtual Host par CNAME</h2>

Avant toute chose cette partie est directement liée à l'option "Host name settings" vue ci-avant. Si vous avez décidé de remplacer l'adresse de vos images <em>images.nightangel.fr.s3.amazonaws.com</em> par <em>images.nightangel.fr</em> alors vous allez devoir ajouter un virtual host dans votre serveur DNS en utilisant un <a href="http://en.wikipedia.org/wiki/CNAME_record" target="_blank">enregistrement CNAME</a>. Basiquement il s'agit d'éditer le fichier de zone pour lui ajouter une entrée de ce type :

<blockquote>images.nightangel.fr. CNAME 			images.nightangel.fr.s3.amazonaws.com.</blockquote>

Je reste volontairement assez vague à ce sujet car cette modification va dépendre de votre système d'exploitation, du serveur DNS utilisé, etc. <a href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/VirtualHosting.html#VirtualHostingCustomURLs" target="_blank">Une documentation est disponible directement sur le site officiel.</a>]]></description>
			<content:encoded><![CDATA[<p><img width="720" height="480" src="http://medias.nightangel.fr/2010/11/wordpress-amazon-s3-storage.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress-amazon-s3-storage" title="wordpress-amazon-s3-storage" /></p>Aujourd'hui c'est la fin des brebis ! OK la prochaine fois je trouverai une rime un peu moins douteuse, c'est promis. Quoiqu'il en soit nous allons voir de quelle manière il est possible de combiner <a href="http://fr.wordpress.org/" target="_blank"><strong>WordPress</strong></a> avec le service de stockage <strong><a href="http://aws.amazon.com/s3/" target="_blank">Amazon S3</a></strong> ; qui fait tant parler de lui (en bien) ces derniers temps. L'idée étant donc de stocker sur leurs serveurs distants, les médias (photos, vidéos, etc) affichés sur votre blog. L'intérêt premier est de ne pas surcharger votre hébergement web, tant au niveau de l'espace de stockage que des ressources serveur. A noter que les avantages sont multiples puisque <a href="http://aws.amazon.com/s3/#requirements" target="_blank">Amazon S3 reste simple, modulable, fiable, rapide et relativement économique</a>. De plus l'excellente compatibilité avec le logiciel <strong><a href="http://www.panic.com/transmit/" target="_blank">Transmit</a></strong> n'est pas à négliger. Stoppons le <em>blabla</em> puisque je ne suis pas là pour vous convaincre, seule la partie technique nous intéresse.<span id="more-5415"></span>

<h1>Ce dont vous avez besoin</h1>

1 - Le plugin <strong><a href="http://wordpress.org/extend/plugins/tantan-s3/" target="_blank">Amazon S3 for WordPress</a></strong> pour combiner WordPress avec le service Amazon S3. Il existe également le plugin <strong>WP S3 Backups</strong> qui permet d'effectuer des sauvegardes mais vous n'en avez pas besoin pour héberger vos images ; il n'en reste pas moins très pratique.

2 - Le plugin <a href="https://addons.mozilla.org/en-US/firefox/addon/3247/" target="_blank"><strong>Amazon S3 Organizer</strong> (anciennement S3Fox)</a> pour Firefox. Il doit exister des plugins équivalents pour d'autres navigateurs mais tenons-nous en à Firefox dans le cas présent. Les étapes décrites dans "Configurer votre compte Amazon S3" peuvent aussi être réalisées avec Transmit ou n'importe quel autre logiciel "Amazon S3 friendly".

3 - Un compte <strong>Amazon S3</strong> : vous pouvez <a href="http://aws-portal.amazon.com/gp/aws/developer/subscription/index.html?productCode=AmazonS3" target="_blank">vous inscrire</a> ou <a href="https://console.aws.amazon.com/ec2/home" target="_blank">vous connecter</a>. Il est quand même important de bien comprendre le fonctionnement <a href="http://aws.amazon.com/s3/#pricing" target="_blank">des grilles tarifaires</a> avant d'aller plus loin. A noter qu'un <a href="http://calculator.s3.amazonaws.com/calc5.html" target="_blank">simulateur tarifaire</a> vous permet de savoir assez rapidement à quoi vous en tenir.

<a href="http://aws.amazon.com/s3/#pricing" target="_blank"><img src="http://medias.nightangel.fr/2010/11/amazon-s3-price-pricing-tarifs.png" alt="" title="amazon-s3-price-pricing-tarifs" width="724" height="509" class="aligncenter size-full wp-image-5417" /></a>

<h1>Configurer votre compte Amazon S3</h1>

1 - Une fois le plugin installé et Firefox redémarré, allez dans le menu <em>Outils -> S3 Organizer</em> pour une version "plein écran" ou sur l'icône en bas à droite pour une version réduite et plus limitée (peu importe) et cliquez sur "Manage Accounts".

<img src="http://medias.nightangel.fr/2010/11/amazon-s3-organizer.png" alt="" title="amazon-s3-organizer" width="720" height="518" class="aligncenter size-full wp-image-5420" />

2 - <a href="https://addons.mozilla.org/en-US/firefox/addon/3247/" target="_blank"><strong>Amazon S3 Organizer</strong></a> a besoin de trois paramètres pour accéder à votre compte Amazon : Account Name (nom du compte), Access Key (clé d'accès) et Secret Key (clé secrète).

<img src="http://medias.nightangel.fr/2010/11/s3-account-manager-amazon.png" alt="" title="s3-account-manager-amazon" width="367" height="432" class="aligncenter size-full wp-image-5419" />

Vous trouverez toutes ces informations dans la section <a href="https://aws-portal.amazon.com/gp/aws/developer/account/index.html?ie=UTF8&action=access-key" target="_blank"><strong>Security Credentials</strong></a> de votre compte ; vous n'aurez plus qu'à les copier/coller.

<img src="http://medias.nightangel.fr/2010/11/amazon-s3-access-credentials.png" alt="" title="amazon-s3-access-credentials" width="717" height="634" class="aligncenter size-full wp-image-5418" />

3 - Une fois que vous êtes connectés, il faut simplement cliquer sur le bouton "create directory" (icône bleue avec une étoile dorée) et nommer votre "bucket". Dans le cas du présent blog nous appellerions le <em>bucket</em> "images.nightangel.fr" par exemple.

<h1>Configurer Amazon S3 for WordPress</h1>

1 - Dans le panneau d'administration de WordPress, cliquez sur "Amazon S3" dans "Réglages". Rien de compliqué au niveau des deux premiers champs : saisissez la clé d'accès (access key) et la clé secrète (secret key). Ensuite vous choisissez le "bucket" puis...

<blockquote>- <strong>Host name settings</strong> : cliquez cette option si vous voulez que l'adresse de vos images soit sous la forme images.nightangel.fr et non images.nightangel.fr.s3.amazonsomething.com. Toutefois, si vous optez pour cette option, il vous faudra mettre en place un CNAME sur votre domaine : nous verrons ça plus bas.
- <strong>File Uploads</strong> : cochez cette case si vous voulez que tous les médias déjà envoyés sur WordPress soient copiés sur votre compte S3. Le plugin vous donne la possibilité de choisir un stockage sur votre serveur ou sur votre compte Amazon.
- <strong>Expires Header</strong> : mise en cache des fichiers.
- <strong>File Permissions</strong> : vous devez absolument vérifier les permissions sinon vos images ne seront pas accessibles au public. En effet, par défaut les fichiers envoyés sur votre compte Amazon S3 sont privés. Cette option vous évitera de devoir gérer les permissions de chaque nouveau fichier envoyé.</blockquote>

2 - Cliquez sur "save" et c'est tout ce qu'il y a à faire. 

<h2>Facultatif : Virtual Host par CNAME</h2>

Avant toute chose cette partie est directement liée à l'option "Host name settings" vue ci-avant. Si vous avez décidé de remplacer l'adresse de vos images <em>images.nightangel.fr.s3.amazonaws.com</em> par <em>images.nightangel.fr</em> alors vous allez devoir ajouter un virtual host dans votre serveur DNS en utilisant un <a href="http://en.wikipedia.org/wiki/CNAME_record" target="_blank">enregistrement CNAME</a>. Basiquement il s'agit d'éditer le fichier de zone pour lui ajouter une entrée de ce type :

<blockquote>images.nightangel.fr. CNAME 			images.nightangel.fr.s3.amazonaws.com.</blockquote>

Je reste volontairement assez vague à ce sujet car cette modification va dépendre de votre système d'exploitation, du serveur DNS utilisé, etc. <a href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/VirtualHosting.html#VirtualHostingCustomURLs" target="_blank">Une documentation est disponible directement sur le site officiel.</a>]]></content:encoded>
			<wfw:commentRss>http://www.nightangel.fr/wordpress-amazon-s3-simple-storage-service/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Quelques mots sur WordPress 3.0 et la fonction get_author_template()</title>
		<link>http://www.nightangel.fr/quelques-mots-sur-wordpress-3-0-et-la-fonction-get_author_template/</link>
		<comments>http://www.nightangel.fr/quelques-mots-sur-wordpress-3-0-et-la-fonction-get_author_template/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 18:27:14 +0000</pubDate>
		<dc:creator>NightAngel</dc:creator>
				<category><![CDATA[Informaticus]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.nightangel.fr/?p=4932</guid>
		<description><![CDATA[<p><img width="720" height="480" src="http://medias.nightangel.fr/2010/02/get_author_template-2.jpg" class="attachment-post-thumbnail wp-post-image" alt="get_author_template-2" title="get_author_template-2" /></p><p style="text-align:justify;">La version 3.0 de WordPress devrait faire son apparition <a href="http://wordpress.org/development/2009/12/wordpress-2-9/" target="_blank">au printemps</a> et je sais que c'est avec impatience qu'un certain nombre d'utilisateurs attendent cette évolution. Pour l'instant le développement avance plutôt bien et il reste moins de 500 "bugs" à corriger alors que plus de 180 corrections sont déjà effectuées. L'état d'avancement se situe donc aux alentours de 30% et une mise à jour vers la 2.9.2 devrait être proposée ce mois-ci. La principale évolution de cette V3 réside dans le fait qu'elle supportera le multi-blogs (plusieurs blogs sur une seule installation) sans recourir à <a href="http://mu.wordpress.org/" target="_blank">WordPress Mu</a>. <a href="http://www.wptavern.com/wpmu-2-9-1-the-last-version-of-mu" target="_blank">La version 2.9.x de Mu sera donc la dernière</a> puisque WordPress Mu laissera le champ libre à WordPress 3.0 dès sa sortie.</p><span id="more-4932"></span>

<div align="center"><img src="http://medias.nightangel.fr/2010/02/get_author_template.png" alt="" title="get_author_template" width="663" height="293" class="aligncenter size-full wp-image-4933" /></div>

<p style="text-align:justify;">La fonction <strong>get_author_template()</strong> est présente dans le fichier <em>wp-includes/theme.php</em> depuis assez longtemps (à compter de la v1.5 si je ne me trompe), elle a récemment été modifiée par <em>westi</em> (<a href="http://core.trac.wordpress.org/changeset/12915" target="_blank">Changeset 12915</a>) dans le cadre de la version 3. Alors tout ça c'est bien beau mais qu'apporte cette modification ?</p>

<p style="text-align:justify;">Vous allez désormais pouvoir utiliser des fichiers de thème du type <em>author-username.php</em> ou <em>author-id.php</em> ; <a href="http://codex.wordpress.org/Category_Templates#What_Template_File_is_Used.3F" target="_blank">comme il est déjà possible de le faire avec les fichiers de thème des catégories</a> : <em>category-id.php</em>. Concrètement, le fichier qui va gérer la "fiche-utilisateur" de "daffyduck" sera <em>author-daffyduck.php</em> ou <em>author-14.php</em> (si l'identifiant de l'utilisateur est 14). Vous allez ainsi pouvoir "designer" (ou "skinner") spécifiquement la "fiche" (ou "profil") de tel ou tel utilisateur. A noter que si vous utilisez le "username" dans le nom du fichier, il faudra bien <a href="http://codex.wordpress.org/WPMU_Functions/get_user_details#Return_Values" target="_blank">prendre la valeur du champ "user_nicename" de la base de données ; et non la valeur du champ "user_login"</a>. Voilà et si vous voulez deux <em>screenshots</em> d'une partie de l'admin de la v3, <a href="http://wpengineer.com/wordpress-3-multisite-settings/" target="_blank">c'est par ici que ça se passe</a>.</p>

<div align="center"><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/zRhum1lcYWk&hl=fr_FR&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/zRhum1lcYWk&hl=fr_FR&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object><br /><font size="1">Dans 3 mois on recommence !</font></div>]]></description>
			<content:encoded><![CDATA[<p><img width="720" height="480" src="http://medias.nightangel.fr/2010/02/get_author_template-2.jpg" class="attachment-post-thumbnail wp-post-image" alt="get_author_template-2" title="get_author_template-2" /></p><p style="text-align:justify;">La version 3.0 de WordPress devrait faire son apparition <a href="http://wordpress.org/development/2009/12/wordpress-2-9/" target="_blank">au printemps</a> et je sais que c'est avec impatience qu'un certain nombre d'utilisateurs attendent cette évolution. Pour l'instant le développement avance plutôt bien et il reste moins de 500 "bugs" à corriger alors que plus de 180 corrections sont déjà effectuées. L'état d'avancement se situe donc aux alentours de 30% et une mise à jour vers la 2.9.2 devrait être proposée ce mois-ci. La principale évolution de cette V3 réside dans le fait qu'elle supportera le multi-blogs (plusieurs blogs sur une seule installation) sans recourir à <a href="http://mu.wordpress.org/" target="_blank">WordPress Mu</a>. <a href="http://www.wptavern.com/wpmu-2-9-1-the-last-version-of-mu" target="_blank">La version 2.9.x de Mu sera donc la dernière</a> puisque WordPress Mu laissera le champ libre à WordPress 3.0 dès sa sortie.</p><span id="more-4932"></span>

<div align="center"><img src="http://medias.nightangel.fr/2010/02/get_author_template.png" alt="" title="get_author_template" width="663" height="293" class="aligncenter size-full wp-image-4933" /></div>

<p style="text-align:justify;">La fonction <strong>get_author_template()</strong> est présente dans le fichier <em>wp-includes/theme.php</em> depuis assez longtemps (à compter de la v1.5 si je ne me trompe), elle a récemment été modifiée par <em>westi</em> (<a href="http://core.trac.wordpress.org/changeset/12915" target="_blank">Changeset 12915</a>) dans le cadre de la version 3. Alors tout ça c'est bien beau mais qu'apporte cette modification ?</p>

<p style="text-align:justify;">Vous allez désormais pouvoir utiliser des fichiers de thème du type <em>author-username.php</em> ou <em>author-id.php</em> ; <a href="http://codex.wordpress.org/Category_Templates#What_Template_File_is_Used.3F" target="_blank">comme il est déjà possible de le faire avec les fichiers de thème des catégories</a> : <em>category-id.php</em>. Concrètement, le fichier qui va gérer la "fiche-utilisateur" de "daffyduck" sera <em>author-daffyduck.php</em> ou <em>author-14.php</em> (si l'identifiant de l'utilisateur est 14). Vous allez ainsi pouvoir "designer" (ou "skinner") spécifiquement la "fiche" (ou "profil") de tel ou tel utilisateur. A noter que si vous utilisez le "username" dans le nom du fichier, il faudra bien <a href="http://codex.wordpress.org/WPMU_Functions/get_user_details#Return_Values" target="_blank">prendre la valeur du champ "user_nicename" de la base de données ; et non la valeur du champ "user_login"</a>. Voilà et si vous voulez deux <em>screenshots</em> d'une partie de l'admin de la v3, <a href="http://wpengineer.com/wordpress-3-multisite-settings/" target="_blank">c'est par ici que ça se passe</a>.</p>

<div align="center"><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/zRhum1lcYWk&hl=fr_FR&fs=1&rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/zRhum1lcYWk&hl=fr_FR&fs=1&rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object><br /><font size="1">Dans 3 mois on recommence !</font></div>]]></content:encoded>
			<wfw:commentRss>http://www.nightangel.fr/quelques-mots-sur-wordpress-3-0-et-la-fonction-get_author_template/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress 2.9 &#8220;Carmen McRae&#8221; dans les bacs : the_post_thumbnail();</title>
		<link>http://www.nightangel.fr/wordpress-2-9-the_post_thumbnail-fonction-function/</link>
		<comments>http://www.nightangel.fr/wordpress-2-9-the_post_thumbnail-fonction-function/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 01:29:59 +0000</pubDate>
		<dc:creator>NightAngel</dc:creator>
				<category><![CDATA[Informaticus]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[fonction the_post_thumbnail]]></category>
		<category><![CDATA[function the_post_thumbnail]]></category>
		<category><![CDATA[the_post_thumbnail]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WordPress 2.9]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[WP2.9]]></category>

		<guid isPermaLink="false">http://www.nightangel.fr/?p=4836</guid>
		<description><![CDATA[<p><img width="720" height="480" src="http://medias.nightangel.fr/2009/12/the_post_thumbnail.jpg" class="attachment-post-thumbnail wp-post-image" alt="the_post_thumbnail" title="the_post_thumbnail" /></p><p style="text-align:justify;">Après de longs mois de développement, <a href="http://wordpress.org/development/2009/12/wordpress-2-9/" target="_blank">la version 2.9</a> (appelée <em><a href="http://fr.wikipedia.org/wiki/Carmen_McRae" target="_blank">Carmen McRae</a></em>) de <a href="http://wordpress.org" target="_blank"><strong>WordPress</strong></a> vient d'arriver <em>dans les bacs</em> et j'y vais donc de mon petit billet. <a href="http://www.nightangel.fr/wordpress-2-9-29-empty_trash_days-get_post_image_id-get_the_post_image-new_excerpt_length-new_excerpt_more-thumbnails-miniatures-wp_allow_repair" target="_blank">J'avais déjà présenté rapidement les principales nouveautés</a> mais je souhaite revenir plus précisément sur la fonction <strong>the_post_thumbnail();</strong>. Fonction que je n'ai pas encore eu le temps de documenter que ce soit dans <a href="http://codex.wordpress.org/" target="_blank">le Codex US</a> ou dans <a href="http://codex.wordpress.org/fr:Accueil" target="_blank">le Codex FR</a>. Je vais donc remédier à ce manque ici avant de compléter la documentation officielle. Tout ce qu'il faut savoir sur la fonction <strong>the_post_thumbnail();</strong> se trouve donc ci-dessous. N'attendez pas la version 3.0 (qui sortira théoriquement au printemps) pour vous mettre à la page !</p><span id="more-4836"></span>

<p style="text-align:justify;">Depuis WordPress 2.9, vous pouvez attribuer une (ou plusieurs) miniature(s) à un article. Pour afficher cette miniature, vous devez utiliser la toute nouvelle fonction <strong>the_post_thumbnail();</strong> dans le fichier de thème de votre choix. Il est bien sûr possible d'utiliser la fonction <em>brute</em> comme je viens de la donner ou de lui passer des arguments pour modifier l'apparence de la miniature, son positionnement, sa taille, etc...</p>

<h3>Déclarer que le thème supporte/utilise la fonction the_post_thumbnail();</h3>

<p style="text-align:justify;">Afin de pouvoir utiliser la fonction <strong>the_post_thumbnail();</strong> dans vos fichiers de thème, il faut ajouter une ligne au fichier <strong>functions.php</strong> :</p>

<pre lang="php"><?php add_theme_support('post-thumbnails'); ?></pre>

<h3>Appeler la miniature dans votre fichier de thème</h3>

<p style="text-align:justify;">Bon là rien de très compliqué, on ajoute cette ligne au fichier de thème et la miniature s'affiche :</p>

<pre lang="php"><?php the_post_thumbnail(); ?></pre>

<h3>Modifier sa taille d'affichage</h3>

<p style="text-align:justify;">Il est possible de passer 3 formats d'images à la fonction.</p>

<pre lang="php">
// the thumbnail
the_post_thumbnail('thumbnail'); 
 
// medium resolution
the_post_thumbnail('medium');
 
// large resolution
the_post_thumbnail('large');
</pre>

<p style="text-align:justify;">Ces formats d'images sont directement liés à ceux que vous avez paramétré dans l'administration de votre blog <em>(Réglages -> Médias)</em>.</p>

<div align="center"><img src="http://medias.nightangel.fr/2009/12/reglages-des-medias.png" alt="reglages-des-medias" title="reglages-des-medias" width="500" height="245" class="aligncenter size-full wp-image-4837" /></div>

<h3>Modifier son positionnement et appliquer une classe CSS</h3>

<p style="text-align:justify;">Il est possible d'attribuer une classe à la fonction afin que la photo soit alignée comme vous le souhaitez.</p>

<pre lang="php">//  Photo alignée à gauche
the_post_thumbnail('thumbnail', array('class' => 'alignleft'));
 
//  Photo alignée à droite
the_post_thumbnail('thumbnail', array('class' => 'alignright'));
 
//  Photo centrée
the_post_thumbnail('thumbnail', array('class' => 'aligncenter'));
 
// Photo alignée à droite + classe personnalisée
the_post_thumbnail('thumbnail', array('class' => 'alignright ma_propre_classe'));
</pre>

<h3>Afficher les miniatures dans un tableau</h3>

<p style="text-align:justify;">Les miniatures peuvent être affichées sous la forme d'un "tableau" en contrôlant leur taille.</p>

<pre lang="php">// Miniature recadrée à 100x100 pixels
the_post_thumbnail(array(100,100), array('class' => 'alignleft'));</pre>

<p style="text-align:justify;">Les proportions (largeur/hauteur) de l'image sont <u>toujours conservées</u>, même si l'on spécifie d'autres valeurs. Dans le cas présent, si l'image originale fait 150x50 pixels, elle sera redimensionnée à 100x33 pixels.</p>

<h3>Appeler les dimensions fournies dans l'administration...</h3>

<p style="text-align:justify;">Les concepteurs de thèmes peuvent rencontrer un problème puisqu'il ne peuvent pas prévoir à l'avance les valeurs qui seront définies par l'utilisateur. Une façon d'aborder ce problème étant d'interroger les valeurs pour les différentes tailles :</p>

<pre lang="php">// Largeur des miniatures
get_option('thumbnail_size_w');
 
// Hauteur des miniatures
get_option('thumbnail_size_h');
 
// Largeur maximale de la taille moyenne
get_option('medium_size_w');

// Hauteur maximale de la taille moyenne
get_option('medium_size_h');
 
// Largeur maximale de la grande taille
get_option('large_size_w');

// Hauteur maximale de la grande taille
get_option('large_size_h');
 
//  Si la fonction retourne "1" comme valeur, le recadrage est activé aux dimensions exactes, sinon "0" et le recadrage (crop) est désactivé.
get_option('thumbnail_crop')</pre>

<h3>Modifier ces dimensions</h3>

<pre lang="php"><?php
$w = get_option('thumbnail_size_w') / 2; /* On divise par 2 la largeur du format "miniature" et on stocke la valeur dans $w */
$h = get_option('thumbnail_size_h') /2; /* On divise par 2 la hauteur du format "miniature" et on stocke la valeur dans $h */
the_post_thumbnail(array($w, $h), array('class' => 'alignleft')); /* On affiche la miniature avec ces nouvelles valeurs */
?></pre>

<h3>Démonstration par l'exemple...</h3>

<p style="text-align:justify;">Concrètement, si la taille de la miniature excède 150x150 pixels et si le recadrage (crop) est activé, la miniature doit être recadrée à 150x150 pixels. Si la miniature n'excède pas 150x150 pixels alors on utilise la taille d'origine de la miniature.</p>

<pre lang="php"><?php
if(get_option('thumbnail_size_w') > 150 && get_option('thumbnail_crop') == 1) {
    the_post_thumbnail(array(150,150));
}else{
    the_post_thumbnail('thumbnail');
}
?></pre>

<h3>Dernière précision !</h3>

<p style="text-align:justify;">Ne pas abuser de ce système car l'affichage d'une miniature génère deux requêtes vers la base de données.</p>

<hr /><p style="text-align:justify;font-weight:bold;">J'aime pas Noël !</p>
<div align="center"><object width="560" height="336"><param name="movie" value="http://www.dailymotion.com/swf/xbjap5"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.dailymotion.com/swf/xbjap5" type="application/x-shockwave-flash" width="560" height="336" allowfullscreen="true" allowscriptaccess="always"></embed></object><br /><font size="1"><a href="http://www.monsieurdream.com/index.php/2009/12/17/1533-jaime-pas-noel-pv-nova-monsieur-dream/" target="_blank"><strong>Cyprien a assuré sur ce coup là !</strong></a></font></div>]]></description>
			<content:encoded><![CDATA[<p><img width="720" height="480" src="http://medias.nightangel.fr/2009/12/the_post_thumbnail.jpg" class="attachment-post-thumbnail wp-post-image" alt="the_post_thumbnail" title="the_post_thumbnail" /></p><p style="text-align:justify;">Après de longs mois de développement, <a href="http://wordpress.org/development/2009/12/wordpress-2-9/" target="_blank">la version 2.9</a> (appelée <em><a href="http://fr.wikipedia.org/wiki/Carmen_McRae" target="_blank">Carmen McRae</a></em>) de <a href="http://wordpress.org" target="_blank"><strong>WordPress</strong></a> vient d'arriver <em>dans les bacs</em> et j'y vais donc de mon petit billet. <a href="http://www.nightangel.fr/wordpress-2-9-29-empty_trash_days-get_post_image_id-get_the_post_image-new_excerpt_length-new_excerpt_more-thumbnails-miniatures-wp_allow_repair" target="_blank">J'avais déjà présenté rapidement les principales nouveautés</a> mais je souhaite revenir plus précisément sur la fonction <strong>the_post_thumbnail();</strong>. Fonction que je n'ai pas encore eu le temps de documenter que ce soit dans <a href="http://codex.wordpress.org/" target="_blank">le Codex US</a> ou dans <a href="http://codex.wordpress.org/fr:Accueil" target="_blank">le Codex FR</a>. Je vais donc remédier à ce manque ici avant de compléter la documentation officielle. Tout ce qu'il faut savoir sur la fonction <strong>the_post_thumbnail();</strong> se trouve donc ci-dessous. N'attendez pas la version 3.0 (qui sortira théoriquement au printemps) pour vous mettre à la page !</p><span id="more-4836"></span>

<p style="text-align:justify;">Depuis WordPress 2.9, vous pouvez attribuer une (ou plusieurs) miniature(s) à un article. Pour afficher cette miniature, vous devez utiliser la toute nouvelle fonction <strong>the_post_thumbnail();</strong> dans le fichier de thème de votre choix. Il est bien sûr possible d'utiliser la fonction <em>brute</em> comme je viens de la donner ou de lui passer des arguments pour modifier l'apparence de la miniature, son positionnement, sa taille, etc...</p>

<h3>Déclarer que le thème supporte/utilise la fonction the_post_thumbnail();</h3>

<p style="text-align:justify;">Afin de pouvoir utiliser la fonction <strong>the_post_thumbnail();</strong> dans vos fichiers de thème, il faut ajouter une ligne au fichier <strong>functions.php</strong> :</p>

<pre lang="php"><?php add_theme_support('post-thumbnails'); ?></pre>

<h3>Appeler la miniature dans votre fichier de thème</h3>

<p style="text-align:justify;">Bon là rien de très compliqué, on ajoute cette ligne au fichier de thème et la miniature s'affiche :</p>

<pre lang="php"><?php the_post_thumbnail(); ?></pre>

<h3>Modifier sa taille d'affichage</h3>

<p style="text-align:justify;">Il est possible de passer 3 formats d'images à la fonction.</p>

<pre lang="php">
// the thumbnail
the_post_thumbnail('thumbnail'); 
 
// medium resolution
the_post_thumbnail('medium');
 
// large resolution
the_post_thumbnail('large');
</pre>

<p style="text-align:justify;">Ces formats d'images sont directement liés à ceux que vous avez paramétré dans l'administration de votre blog <em>(Réglages -> Médias)</em>.</p>

<div align="center"><img src="http://medias.nightangel.fr/2009/12/reglages-des-medias.png" alt="reglages-des-medias" title="reglages-des-medias" width="500" height="245" class="aligncenter size-full wp-image-4837" /></div>

<h3>Modifier son positionnement et appliquer une classe CSS</h3>

<p style="text-align:justify;">Il est possible d'attribuer une classe à la fonction afin que la photo soit alignée comme vous le souhaitez.</p>

<pre lang="php">//  Photo alignée à gauche
the_post_thumbnail('thumbnail', array('class' => 'alignleft'));
 
//  Photo alignée à droite
the_post_thumbnail('thumbnail', array('class' => 'alignright'));
 
//  Photo centrée
the_post_thumbnail('thumbnail', array('class' => 'aligncenter'));
 
// Photo alignée à droite + classe personnalisée
the_post_thumbnail('thumbnail', array('class' => 'alignright ma_propre_classe'));
</pre>

<h3>Afficher les miniatures dans un tableau</h3>

<p style="text-align:justify;">Les miniatures peuvent être affichées sous la forme d'un "tableau" en contrôlant leur taille.</p>

<pre lang="php">// Miniature recadrée à 100x100 pixels
the_post_thumbnail(array(100,100), array('class' => 'alignleft'));</pre>

<p style="text-align:justify;">Les proportions (largeur/hauteur) de l'image sont <u>toujours conservées</u>, même si l'on spécifie d'autres valeurs. Dans le cas présent, si l'image originale fait 150x50 pixels, elle sera redimensionnée à 100x33 pixels.</p>

<h3>Appeler les dimensions fournies dans l'administration...</h3>

<p style="text-align:justify;">Les concepteurs de thèmes peuvent rencontrer un problème puisqu'il ne peuvent pas prévoir à l'avance les valeurs qui seront définies par l'utilisateur. Une façon d'aborder ce problème étant d'interroger les valeurs pour les différentes tailles :</p>

<pre lang="php">// Largeur des miniatures
get_option('thumbnail_size_w');
 
// Hauteur des miniatures
get_option('thumbnail_size_h');
 
// Largeur maximale de la taille moyenne
get_option('medium_size_w');

// Hauteur maximale de la taille moyenne
get_option('medium_size_h');
 
// Largeur maximale de la grande taille
get_option('large_size_w');

// Hauteur maximale de la grande taille
get_option('large_size_h');
 
//  Si la fonction retourne "1" comme valeur, le recadrage est activé aux dimensions exactes, sinon "0" et le recadrage (crop) est désactivé.
get_option('thumbnail_crop')</pre>

<h3>Modifier ces dimensions</h3>

<pre lang="php"><?php
$w = get_option('thumbnail_size_w') / 2; /* On divise par 2 la largeur du format "miniature" et on stocke la valeur dans $w */
$h = get_option('thumbnail_size_h') /2; /* On divise par 2 la hauteur du format "miniature" et on stocke la valeur dans $h */
the_post_thumbnail(array($w, $h), array('class' => 'alignleft')); /* On affiche la miniature avec ces nouvelles valeurs */
?></pre>

<h3>Démonstration par l'exemple...</h3>

<p style="text-align:justify;">Concrètement, si la taille de la miniature excède 150x150 pixels et si le recadrage (crop) est activé, la miniature doit être recadrée à 150x150 pixels. Si la miniature n'excède pas 150x150 pixels alors on utilise la taille d'origine de la miniature.</p>

<pre lang="php"><?php
if(get_option('thumbnail_size_w') > 150 && get_option('thumbnail_crop') == 1) {
    the_post_thumbnail(array(150,150));
}else{
    the_post_thumbnail('thumbnail');
}
?></pre>

<h3>Dernière précision !</h3>

<p style="text-align:justify;">Ne pas abuser de ce système car l'affichage d'une miniature génère deux requêtes vers la base de données.</p>

<hr /><p style="text-align:justify;font-weight:bold;">J'aime pas Noël !</p>
<div align="center"><object width="560" height="336"><param name="movie" value="http://www.dailymotion.com/swf/xbjap5"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.dailymotion.com/swf/xbjap5" type="application/x-shockwave-flash" width="560" height="336" allowfullscreen="true" allowscriptaccess="always"></embed></object><br /><font size="1"><a href="http://www.monsieurdream.com/index.php/2009/12/17/1533-jaime-pas-noel-pv-nova-monsieur-dream/" target="_blank"><strong>Cyprien a assuré sur ce coup là !</strong></a></font></div>]]></content:encoded>
			<wfw:commentRss>http://www.nightangel.fr/wordpress-2-9-the_post_thumbnail-fonction-function/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>WordPress 2.9 approche, préparez -déjà- votre blog !</title>
		<link>http://www.nightangel.fr/wordpress-2-9-29-empty_trash_days-get_post_image_id-get_the_post_image-new_excerpt_length-new_excerpt_more-thumbnails-miniatures-wp_allow_repair/</link>
		<comments>http://www.nightangel.fr/wordpress-2-9-29-empty_trash_days-get_post_image_id-get_the_post_image-new_excerpt_length-new_excerpt_more-thumbnails-miniatures-wp_allow_repair/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 10:55:21 +0000</pubDate>
		<dc:creator>NightAngel</dc:creator>
				<category><![CDATA[Informaticus]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[EMPTY_TRASH_DAYS]]></category>
		<category><![CDATA[excerpt]]></category>
		<category><![CDATA[functions.php]]></category>
		<category><![CDATA[get_post_image_id]]></category>
		<category><![CDATA[get_the_post_image]]></category>
		<category><![CDATA[has_post_image]]></category>
		<category><![CDATA[new_excerpt_length]]></category>
		<category><![CDATA[new_excerpt_more]]></category>
		<category><![CDATA[post-thumbnails]]></category>
		<category><![CDATA[the_excerpt]]></category>
		<category><![CDATA[the_post_image]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WordPress 2.9]]></category>
		<category><![CDATA[WordPress miniature]]></category>
		<category><![CDATA[WordPress thumbnail]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[wp-config.php]]></category>
		<category><![CDATA[WP2.9]]></category>
		<category><![CDATA[WP_ALLOW_REPAIR]]></category>

		<guid isPermaLink="false">http://www.nightangel.fr/?p=4773</guid>
		<description><![CDATA[<p><img width="720" height="540" src="http://medias.nightangel.fr/2009/12/wordpress-2-9-29.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress-2-9-29" title="wordpress-2-9-29" /></p><p style="text-align:justify;">Autant se le dire tout de suite, <strong>WordPress 2.9</strong> ne sortira pas dans l'heure qui vient. Je viens de jeter un coup d'oeil à la roadmap, l'équipe avance vite, même de plus en plus rapidement ces derniers jours. Sur plus de 495 tickets, 447 (90%) sont désormais clôturés et 49 (10%) sont toujours actifs. Toute l'équipe fait son possible pour sortir cette v2.9 assez rapidement, la seule chose de sûre étant qu'elle sera "dans les bacs" cette année et probablement dans la quinzaine qui arrive. En attendant, pendant que les <em>Lead Developers</em> (<a href="http://ma.tt/" target="_blank">Matt</a>, <a href="http://boren.nu/" target="_blank">Ryan</a>, <a href="http://www.laptoptips.ca/" target="_blank">Andrew</a>, <a href="http://blog.ftwr.co.uk/" target="_blank">Peter</a> et <a href="http://markjaquith.com/" target="_blank">Mark</a>) sont <strike>en train de se la couler douce</strike> à <a href="http://wordpress.org/development/2009/12/intermission/" target="_blank">la WordCamp de Orlando</a>, moi j'y vais de mon petit billet pour vous détailler les principales nouveautés qu'apportera cette version. Je vais jute évoquer les nouveautés que je juge pertinentes et en aucun cas les corrections et optimisations qui sont pourtant très nombreuses. Ready to go ?</p><span id="more-4773"></span>

<h4><img src="http://medias.nightangel.fr/2009/12/deux-filtres-pour-gérer-les-extraits.png" alt="deux-filtres-pour-gérer-les-extraits" title="deux-filtres-pour-gérer-les-extraits" width="671" height="42" class="aligncenter size-full wp-image-4809" /></h4>

<div align="center"><img src="http://medias.nightangel.fr/2009/11/Capture-d’écran-2009-12-08-à-03.12.27.png" alt="Capture d’écran 2009-12-08 à 03.12.27" title="Capture d’écran 2009-12-08 à 03.12.27" width="457" height="181" class="aligncenter size-full wp-image-4805" /></div>

<p style="text-align:justify;">Dans WordPress 2.9 Il y aura deux nouveaux filtres pour ajuster les extraits (the_excerpt). Jusqu'à maintenant, la fonction the_excerpt(); coupait à un maximum de 55 mots et ajoutait un [...]. Ces filtres sont paramétrables dans WordPress 2.9. Pour modifier les valeurs de ces filtres, il vous suffit de paramétrer deux fonctions dans le fichier <strong>functions.php</strong> de votre thème :</p>

<pre lang="php">// Nombre de mots avant coupure
function new_excerpt_length($length) {
	return 40;
}
add_filter('excerpt_length', 'new_excerpt_length');
 
// Texte de la coupure
function new_excerpt_more($more) {
	return '...';
}
add_filter('excerpt_more', 'new_excerpt_more');</pre>

<h4><img src="http://medias.nightangel.fr/2009/12/editeur-d-images.png" alt="editeur-d-images" title="editeur-d-images" width="272" height="41" class="aligncenter size-full wp-image-4810" /></h4>

<div align="center"><img src="http://medias.nightangel.fr/2009/11/Capture-d’écran-2009-12-08-à-03.09.31.png" alt="Capture d’écran 2009-12-08 à 03.09.31" title="Capture d’écran 2009-12-08 à 03.09.31" width="682" height="661" class="aligncenter size-full wp-image-4804" /></div>

<p style="text-align:justify;">La v2.9 sera dotée d'un éditeur d'images. Il sera aisément possible de couper/cropper/rogner une image, la faire pivoter, etc... Je ne pense pas qu'il soit utile d'en dire davantage, <a href="http://wpengineer.com/new-feature-for-wordpress-2-9-wordpress-image-editor/" target="_blank">tout étant dit ici</a>.</p>

<h4><img src="http://medias.nightangel.fr/2009/12/attacher-une-miniature-a-un-billet.png" alt="attacher-une-miniature-a-un-billet" title="attacher-une-miniature-a-un-billet" width="510" height="34" class="aligncenter size-full wp-image-4811" /></h4>

<p style="text-align:justify;">Depuis l'administration de WordPress, lors de la rédaction d'un billet, vous allez pouvoir joindre une (ou plusieurs) image(s) principale(s) à ce billet ; ou plutôt une miniature. Les développeurs de thèmes pourront ensuite "appeler" cette miniature dans le fichier (de thème) de leur choix : généralement <strong>index.php</strong> mais pourquoi pas <strong>archives.php</strong>, etc...</p>

<div align="center"><img src="http://medias.nightangel.fr/2009/11/Capture-d’écran-2009-12-08-à-02.45.20.png" alt="Capture d’écran 2009-12-08 à 02.45.20" title="Capture d’écran 2009-12-08 à 02.45.20" width="289" height="266" class="aligncenter size-full wp-image-4800" /><br /><font size="1">Possibilité d'attacher plusieurs miniatures et affichage aléatoire.</font></div>

<p style="text-align:justify;">Pour gérer cette miniature depuis votre thème, 4 nouvelles fonctions sont ajoutées :</p>

<h5><img src="http://medias.nightangel.fr/2009/12/has_post_image.png" alt="has_post_image" title="has_post_image" width="235" height="36" class="aligncenter size-full wp-image-4812" /></h5>

<p style="text-align:justify;">La fonction <strong>has_post_image();</strong> permet de vérifier s'il y a une miniature de rattachée à tel billet. On l'utilisera typiquement de cette manière :</p>

<pre lang="php"><?php if ( has_post_image() ) : /* Si il y a une miniature alors... */ ?>
	Afficher la miniature
<?php endif; ?></pre>

<h5><img src="http://medias.nightangel.fr/2009/12/get_post_image_id.png" alt="get_post_image_id" title="get_post_image_id" width="274" height="36" class="aligncenter size-full wp-image-4814" /></h5>

<p style="text-align:justify;">La fonction <strong>get_post_image_id();</strong> permet de récupérer l'identifiant (id) de la miniature.</p>

<h5><img src="http://medias.nightangel.fr/2009/12/the_post_image.png" alt="the_post_image" title="the_post_image" width="236" height="36" class="aligncenter size-full wp-image-4815" /></h5>

<p style="text-align:justify;">La fonction <strong>the_post_image();</strong> génère automatiquement les balises HTML pour afficher directement la miniature. Si on couple cette fonction avec <strong>has_post_image();</strong> (vue plus haut), cela nous donne...</p>

<pre lang="php"><?php if ( has_post_image() ) : /* Si il y a une miniature alors... */ ?>
	<a href="<?php the_permalink(); ?>"><?php the_post_image(); ?></a>
<?php endif; ?></pre>

<p style="text-align:justify;">Cette fonction peut recevoir la taille de la miniature comme argument...</p>

<pre lang="php"><?php the_post_image( array( 75, 75 ) ); ?></pre>

<p style="text-align:justify;">Il est aussi possible d'appliquer une classe (CSS) à notre miniature...</p>

<pre lang="php"><?php the_post_image array( 'class' => 'alignleft' ) ); ?></pre>

<h5><img src="http://medias.nightangel.fr/2009/12/get_the_post_image.png" alt="get_the_post_image" title="get_the_post_image" width="292" height="36" class="aligncenter size-full wp-image-4816" /></h5>

<p style="text-align:justify;">La fonction <strong>get_the_post_image();</strong> récupère l'url de la miniature, libre à vous de l'imbriquer à l'intérieur de balises img par exemple.</p>

<h5><img src="http://medias.nightangel.fr/2009/12/verifier-que-la-version-de-wordpress-supporte-les-miniatures-thumbnails-support.png" alt="verifier-que-la-version-de-wordpress-supporte-les-miniatures-thumbnails-support" title="verifier-que-la-version-de-wordpress-supporte-les-miniatures-thumbnails-support" width="663" height="37" class="aligncenter size-full wp-image-4817" /></h5>

<p style="text-align:justify;">A noter que vous pouvez "vérifier" que la version de WordPress sur laquelle sera installé le thème supporte cette fonctionnalité. Pour cela une petite édition du fichier <strong>functions.php</strong>...</p>

<pre lang="php">if ( function_exists( 'add_theme_support' ) )
	add_theme_support( 'post-thumbnails' );</pre>

<h4><img src="http://medias.nightangel.fr/2009/12/mise-a-jour-par-lot-des-plugins.png" alt="mise-a-jour-par-lot-des-plugins" title="mise-a-jour-par-lot-des-plugins" width="452" height="41" class="aligncenter size-full wp-image-4818" /></h4>

<div align="center"><img src="http://medias.nightangel.fr/2009/11/plugin-update-29.png" alt="plugin-update-29" title="plugin-update-29" width="560" height="544" class="aligncenter size-full wp-image-4806" /></div>

<p style="text-align:justify;">WordPress 2.9 vous offre la possibilité de mettre à jour tous vos plugins, qui ont une mise à jour disponible, en une seule étape. Rien d'autre à ajouter à ce niveau là même si je n'ai jamais été très fan de ces mises à jour automatiques.</p>

<h4><img src="http://medias.nightangel.fr/2009/12/reparation-de-la-base-de-donnees.png" alt="reparation-de-la-base-de-donnees" title="reparation-de-la-base-de-donnees" width="511" height="41" class="aligncenter size-full wp-image-4819" /></h4>

<div align="center"><img src="http://medias.nightangel.fr/2009/11/12.png" alt="12" title="12" width="720" height="189" class="aligncenter size-full wp-image-4802" /></div>

<p style="text-align:justify;">Un script de réparation de la base de données est désormais intégré à WordPress 2.9. Pour l'activer il suffit d'ajouter ceci au fichier <strong>wp-config.php</strong> :</p>

<pre lang="php">define('WP_ALLOW_REPAIR', true);</pre>

<div align="center"><img src="http://medias.nightangel.fr/2009/11/13.png" alt="13" title="13" width="720" height="306" class="aligncenter size-full wp-image-4803" /></div>

<p style="text-align:justify;">Mettre <em>false</em> à la place de <em>true</em> pour désactiver ce script. Ce dernier (s'il est activé) peut être appelé "de l'extérieur" à l'adresse : <em>http://example.com/wp-admin/maint/repair.php</em>. N'attendez pas trop de miracles de ce côté là car le script ne fait qu'utiliser les instructions SQL <a href="http://dev.mysql.com/doc/refman/5.1/en/analyze-table.html" target="_blank">ANALYZE TABLE</a>, <a href="http://dev.mysql.com/doc/refman/5.1/en/repair-table.html" target="_blank">REPARI TABLE</a> et <a href="http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html" target="_blank">OPTIMIZE TABLE</a>.</p>

<h4><img src="http://medias.nightangel.fr/2009/12/la-poubelle-trash.png" alt="la-poubelle-trash" title="la-poubelle-trash" width="283" height="41" class="aligncenter size-full wp-image-4820" /></h4>

<div align="center"><img src="http://medias.nightangel.fr/2009/11/Capture-d’écran-2009-12-08-à-03.28.40.png" alt="Capture d’écran 2009-12-08 à 03.28.40" title="Capture d’écran 2009-12-08 à 03.28.40" width="632" height="305" class="aligncenter size-full wp-image-4807" /></div>

<p style="text-align:justify;">Cette version 2.9 se voit dotée d'une poubelle qui vous évitera, peut être comme moi, d'avoir des tonnes de billets en "brouillon". Une fois dans la poubelle, un billet peut en sortir pour repasser en brouillon ou être supprimé définitivement : une poubelle quoi ! Attention tout de même car cette poubelle dispose d'une fonction de <em>délestage</em>. Sauf précision inverse, <u>le contenu de la poubelle est supprimé après 30 jours</u>. Alors il est bien sûr possible de modifier ce délai (réduction à 10 jours par exemple) en ajoutant la ligne suivante dans le fichier <strong>functions.php</strong> :</p>

<pre lang="php">define( 'EMPTY_TRASH_DAYS', 10 );</pre>

<p style="text-align:justify;">Pour désactiver cette suppression automatique :</p>

<pre lang="php">define( 'EMPTY_TRASH_DAYS', 0 );</pre>

<h4><img src="http://medias.nightangel.fr/2009/12/conclusion.png" alt="conclusion" title="conclusion" width="172" height="34" class="aligncenter size-full wp-image-4821" /></h4>

<p style="text-align:justify;">Ouf... je pense que le tour est fait même si j'ai du oublier quelques trucs en chemin. L'impasse a volontairement été faite sur les liens (url) et les <a href="http://wordpress.org/development/2009/12/canonical-plugins/" target="_blank">plugins canoniques</a> (Canonical). Si je n'ai souhaité en dire davantage sur l'utilisation de l'attribut <em>rel=canonical</em> de la balise html "a", c'est parce qu'il s'agit d'un sujet qui fait débat, tant au sein de la communauté que de l'équipe de dev, et qui n'est toujours pas tranché à l'heure actuelle. Pour conclure je dirais que cette version apporte donc un flot de nouveautés non négligeables : bonne évolution ! Ceux qui s'attendaient à mieux peuvent toujours <a href="http://codex.wordpress.org/Contributing_to_WordPress#Development_and_Testing" target="_blank">se joindre à nous</a> ou prendre leur mal en patience et attendre 2010 pour la version 3.0. Bon blogging à tous !</p>

<p style="text-align:justify;">PS : WordPress 2.9 beta 2 pèse 2.5Mo en version compressée (.zip) et 9.5Mo après décompression.</p>

<div align="center"><object width="560" height="335"><param name="movie" value="http://www.dailymotion.com/swf/xb7kxj"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.dailymotion.com/swf/xb7kxj" type="application/x-shockwave-flash" width="560" height="335" allowfullscreen="true" allowscriptaccess="always"></embed></object></div>]]></description>
			<content:encoded><![CDATA[<p><img width="720" height="540" src="http://medias.nightangel.fr/2009/12/wordpress-2-9-29.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress-2-9-29" title="wordpress-2-9-29" /></p><p style="text-align:justify;">Autant se le dire tout de suite, <strong>WordPress 2.9</strong> ne sortira pas dans l'heure qui vient. Je viens de jeter un coup d'oeil à la roadmap, l'équipe avance vite, même de plus en plus rapidement ces derniers jours. Sur plus de 495 tickets, 447 (90%) sont désormais clôturés et 49 (10%) sont toujours actifs. Toute l'équipe fait son possible pour sortir cette v2.9 assez rapidement, la seule chose de sûre étant qu'elle sera "dans les bacs" cette année et probablement dans la quinzaine qui arrive. En attendant, pendant que les <em>Lead Developers</em> (<a href="http://ma.tt/" target="_blank">Matt</a>, <a href="http://boren.nu/" target="_blank">Ryan</a>, <a href="http://www.laptoptips.ca/" target="_blank">Andrew</a>, <a href="http://blog.ftwr.co.uk/" target="_blank">Peter</a> et <a href="http://markjaquith.com/" target="_blank">Mark</a>) sont <strike>en train de se la couler douce</strike> à <a href="http://wordpress.org/development/2009/12/intermission/" target="_blank">la WordCamp de Orlando</a>, moi j'y vais de mon petit billet pour vous détailler les principales nouveautés qu'apportera cette version. Je vais jute évoquer les nouveautés que je juge pertinentes et en aucun cas les corrections et optimisations qui sont pourtant très nombreuses. Ready to go ?</p><span id="more-4773"></span>

<h4><img src="http://medias.nightangel.fr/2009/12/deux-filtres-pour-gérer-les-extraits.png" alt="deux-filtres-pour-gérer-les-extraits" title="deux-filtres-pour-gérer-les-extraits" width="671" height="42" class="aligncenter size-full wp-image-4809" /></h4>

<div align="center"><img src="http://medias.nightangel.fr/2009/11/Capture-d’écran-2009-12-08-à-03.12.27.png" alt="Capture d’écran 2009-12-08 à 03.12.27" title="Capture d’écran 2009-12-08 à 03.12.27" width="457" height="181" class="aligncenter size-full wp-image-4805" /></div>

<p style="text-align:justify;">Dans WordPress 2.9 Il y aura deux nouveaux filtres pour ajuster les extraits (the_excerpt). Jusqu'à maintenant, la fonction the_excerpt(); coupait à un maximum de 55 mots et ajoutait un [...]. Ces filtres sont paramétrables dans WordPress 2.9. Pour modifier les valeurs de ces filtres, il vous suffit de paramétrer deux fonctions dans le fichier <strong>functions.php</strong> de votre thème :</p>

<pre lang="php">// Nombre de mots avant coupure
function new_excerpt_length($length) {
	return 40;
}
add_filter('excerpt_length', 'new_excerpt_length');
 
// Texte de la coupure
function new_excerpt_more($more) {
	return '...';
}
add_filter('excerpt_more', 'new_excerpt_more');</pre>

<h4><img src="http://medias.nightangel.fr/2009/12/editeur-d-images.png" alt="editeur-d-images" title="editeur-d-images" width="272" height="41" class="aligncenter size-full wp-image-4810" /></h4>

<div align="center"><img src="http://medias.nightangel.fr/2009/11/Capture-d’écran-2009-12-08-à-03.09.31.png" alt="Capture d’écran 2009-12-08 à 03.09.31" title="Capture d’écran 2009-12-08 à 03.09.31" width="682" height="661" class="aligncenter size-full wp-image-4804" /></div>

<p style="text-align:justify;">La v2.9 sera dotée d'un éditeur d'images. Il sera aisément possible de couper/cropper/rogner une image, la faire pivoter, etc... Je ne pense pas qu'il soit utile d'en dire davantage, <a href="http://wpengineer.com/new-feature-for-wordpress-2-9-wordpress-image-editor/" target="_blank">tout étant dit ici</a>.</p>

<h4><img src="http://medias.nightangel.fr/2009/12/attacher-une-miniature-a-un-billet.png" alt="attacher-une-miniature-a-un-billet" title="attacher-une-miniature-a-un-billet" width="510" height="34" class="aligncenter size-full wp-image-4811" /></h4>

<p style="text-align:justify;">Depuis l'administration de WordPress, lors de la rédaction d'un billet, vous allez pouvoir joindre une (ou plusieurs) image(s) principale(s) à ce billet ; ou plutôt une miniature. Les développeurs de thèmes pourront ensuite "appeler" cette miniature dans le fichier (de thème) de leur choix : généralement <strong>index.php</strong> mais pourquoi pas <strong>archives.php</strong>, etc...</p>

<div align="center"><img src="http://medias.nightangel.fr/2009/11/Capture-d’écran-2009-12-08-à-02.45.20.png" alt="Capture d’écran 2009-12-08 à 02.45.20" title="Capture d’écran 2009-12-08 à 02.45.20" width="289" height="266" class="aligncenter size-full wp-image-4800" /><br /><font size="1">Possibilité d'attacher plusieurs miniatures et affichage aléatoire.</font></div>

<p style="text-align:justify;">Pour gérer cette miniature depuis votre thème, 4 nouvelles fonctions sont ajoutées :</p>

<h5><img src="http://medias.nightangel.fr/2009/12/has_post_image.png" alt="has_post_image" title="has_post_image" width="235" height="36" class="aligncenter size-full wp-image-4812" /></h5>

<p style="text-align:justify;">La fonction <strong>has_post_image();</strong> permet de vérifier s'il y a une miniature de rattachée à tel billet. On l'utilisera typiquement de cette manière :</p>

<pre lang="php"><?php if ( has_post_image() ) : /* Si il y a une miniature alors... */ ?>
	Afficher la miniature
<?php endif; ?></pre>

<h5><img src="http://medias.nightangel.fr/2009/12/get_post_image_id.png" alt="get_post_image_id" title="get_post_image_id" width="274" height="36" class="aligncenter size-full wp-image-4814" /></h5>

<p style="text-align:justify;">La fonction <strong>get_post_image_id();</strong> permet de récupérer l'identifiant (id) de la miniature.</p>

<h5><img src="http://medias.nightangel.fr/2009/12/the_post_image.png" alt="the_post_image" title="the_post_image" width="236" height="36" class="aligncenter size-full wp-image-4815" /></h5>

<p style="text-align:justify;">La fonction <strong>the_post_image();</strong> génère automatiquement les balises HTML pour afficher directement la miniature. Si on couple cette fonction avec <strong>has_post_image();</strong> (vue plus haut), cela nous donne...</p>

<pre lang="php"><?php if ( has_post_image() ) : /* Si il y a une miniature alors... */ ?>
	<a href="<?php the_permalink(); ?>"><?php the_post_image(); ?></a>
<?php endif; ?></pre>

<p style="text-align:justify;">Cette fonction peut recevoir la taille de la miniature comme argument...</p>

<pre lang="php"><?php the_post_image( array( 75, 75 ) ); ?></pre>

<p style="text-align:justify;">Il est aussi possible d'appliquer une classe (CSS) à notre miniature...</p>

<pre lang="php"><?php the_post_image array( 'class' => 'alignleft' ) ); ?></pre>

<h5><img src="http://medias.nightangel.fr/2009/12/get_the_post_image.png" alt="get_the_post_image" title="get_the_post_image" width="292" height="36" class="aligncenter size-full wp-image-4816" /></h5>

<p style="text-align:justify;">La fonction <strong>get_the_post_image();</strong> récupère l'url de la miniature, libre à vous de l'imbriquer à l'intérieur de balises img par exemple.</p>

<h5><img src="http://medias.nightangel.fr/2009/12/verifier-que-la-version-de-wordpress-supporte-les-miniatures-thumbnails-support.png" alt="verifier-que-la-version-de-wordpress-supporte-les-miniatures-thumbnails-support" title="verifier-que-la-version-de-wordpress-supporte-les-miniatures-thumbnails-support" width="663" height="37" class="aligncenter size-full wp-image-4817" /></h5>

<p style="text-align:justify;">A noter que vous pouvez "vérifier" que la version de WordPress sur laquelle sera installé le thème supporte cette fonctionnalité. Pour cela une petite édition du fichier <strong>functions.php</strong>...</p>

<pre lang="php">if ( function_exists( 'add_theme_support' ) )
	add_theme_support( 'post-thumbnails' );</pre>

<h4><img src="http://medias.nightangel.fr/2009/12/mise-a-jour-par-lot-des-plugins.png" alt="mise-a-jour-par-lot-des-plugins" title="mise-a-jour-par-lot-des-plugins" width="452" height="41" class="aligncenter size-full wp-image-4818" /></h4>

<div align="center"><img src="http://medias.nightangel.fr/2009/11/plugin-update-29.png" alt="plugin-update-29" title="plugin-update-29" width="560" height="544" class="aligncenter size-full wp-image-4806" /></div>

<p style="text-align:justify;">WordPress 2.9 vous offre la possibilité de mettre à jour tous vos plugins, qui ont une mise à jour disponible, en une seule étape. Rien d'autre à ajouter à ce niveau là même si je n'ai jamais été très fan de ces mises à jour automatiques.</p>

<h4><img src="http://medias.nightangel.fr/2009/12/reparation-de-la-base-de-donnees.png" alt="reparation-de-la-base-de-donnees" title="reparation-de-la-base-de-donnees" width="511" height="41" class="aligncenter size-full wp-image-4819" /></h4>

<div align="center"><img src="http://medias.nightangel.fr/2009/11/12.png" alt="12" title="12" width="720" height="189" class="aligncenter size-full wp-image-4802" /></div>

<p style="text-align:justify;">Un script de réparation de la base de données est désormais intégré à WordPress 2.9. Pour l'activer il suffit d'ajouter ceci au fichier <strong>wp-config.php</strong> :</p>

<pre lang="php">define('WP_ALLOW_REPAIR', true);</pre>

<div align="center"><img src="http://medias.nightangel.fr/2009/11/13.png" alt="13" title="13" width="720" height="306" class="aligncenter size-full wp-image-4803" /></div>

<p style="text-align:justify;">Mettre <em>false</em> à la place de <em>true</em> pour désactiver ce script. Ce dernier (s'il est activé) peut être appelé "de l'extérieur" à l'adresse : <em>http://example.com/wp-admin/maint/repair.php</em>. N'attendez pas trop de miracles de ce côté là car le script ne fait qu'utiliser les instructions SQL <a href="http://dev.mysql.com/doc/refman/5.1/en/analyze-table.html" target="_blank">ANALYZE TABLE</a>, <a href="http://dev.mysql.com/doc/refman/5.1/en/repair-table.html" target="_blank">REPARI TABLE</a> et <a href="http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html" target="_blank">OPTIMIZE TABLE</a>.</p>

<h4><img src="http://medias.nightangel.fr/2009/12/la-poubelle-trash.png" alt="la-poubelle-trash" title="la-poubelle-trash" width="283" height="41" class="aligncenter size-full wp-image-4820" /></h4>

<div align="center"><img src="http://medias.nightangel.fr/2009/11/Capture-d’écran-2009-12-08-à-03.28.40.png" alt="Capture d’écran 2009-12-08 à 03.28.40" title="Capture d’écran 2009-12-08 à 03.28.40" width="632" height="305" class="aligncenter size-full wp-image-4807" /></div>

<p style="text-align:justify;">Cette version 2.9 se voit dotée d'une poubelle qui vous évitera, peut être comme moi, d'avoir des tonnes de billets en "brouillon". Une fois dans la poubelle, un billet peut en sortir pour repasser en brouillon ou être supprimé définitivement : une poubelle quoi ! Attention tout de même car cette poubelle dispose d'une fonction de <em>délestage</em>. Sauf précision inverse, <u>le contenu de la poubelle est supprimé après 30 jours</u>. Alors il est bien sûr possible de modifier ce délai (réduction à 10 jours par exemple) en ajoutant la ligne suivante dans le fichier <strong>functions.php</strong> :</p>

<pre lang="php">define( 'EMPTY_TRASH_DAYS', 10 );</pre>

<p style="text-align:justify;">Pour désactiver cette suppression automatique :</p>

<pre lang="php">define( 'EMPTY_TRASH_DAYS', 0 );</pre>

<h4><img src="http://medias.nightangel.fr/2009/12/conclusion.png" alt="conclusion" title="conclusion" width="172" height="34" class="aligncenter size-full wp-image-4821" /></h4>

<p style="text-align:justify;">Ouf... je pense que le tour est fait même si j'ai du oublier quelques trucs en chemin. L'impasse a volontairement été faite sur les liens (url) et les <a href="http://wordpress.org/development/2009/12/canonical-plugins/" target="_blank">plugins canoniques</a> (Canonical). Si je n'ai souhaité en dire davantage sur l'utilisation de l'attribut <em>rel=canonical</em> de la balise html "a", c'est parce qu'il s'agit d'un sujet qui fait débat, tant au sein de la communauté que de l'équipe de dev, et qui n'est toujours pas tranché à l'heure actuelle. Pour conclure je dirais que cette version apporte donc un flot de nouveautés non négligeables : bonne évolution ! Ceux qui s'attendaient à mieux peuvent toujours <a href="http://codex.wordpress.org/Contributing_to_WordPress#Development_and_Testing" target="_blank">se joindre à nous</a> ou prendre leur mal en patience et attendre 2010 pour la version 3.0. Bon blogging à tous !</p>

<p style="text-align:justify;">PS : WordPress 2.9 beta 2 pèse 2.5Mo en version compressée (.zip) et 9.5Mo après décompression.</p>

<div align="center"><object width="560" height="335"><param name="movie" value="http://www.dailymotion.com/swf/xb7kxj"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.dailymotion.com/swf/xb7kxj" type="application/x-shockwave-flash" width="560" height="335" allowfullscreen="true" allowscriptaccess="always"></embed></object></div>]]></content:encoded>
			<wfw:commentRss>http://www.nightangel.fr/wordpress-2-9-29-empty_trash_days-get_post_image_id-get_the_post_image-new_excerpt_length-new_excerpt_more-thumbnails-miniatures-wp_allow_repair/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>WordPress &amp; Typographie</title>
		<link>http://www.nightangel.fr/wordpress-typographie-plugin-guillemets-espaces/</link>
		<comments>http://www.nightangel.fr/wordpress-typographie-plugin-guillemets-espaces/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 23:24:11 +0000</pubDate>
		<dc:creator>NightAngel</dc:creator>
				<category><![CDATA[Informaticus]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[typographie]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WordPress et la typographie]]></category>

		<guid isPermaLink="false">http://www.nightangel.fr/?p=4748</guid>
		<description><![CDATA[<p><img width="720" height="480" src="http://medias.nightangel.fr/2009/10/wordpress-typographie1.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress-typographie" title="wordpress-typographie" /></p><p style="text-align:justify;">Cela fait maintenant plusieurs années que je publie du contenu sur différentes plates-formes de blogs et j'ai souvent été confronté à des problèmes typographiques. Je suis conscient d'avoir un problème d'ordre maladif entre <a href="http://www.nightangel.fr/category/le-francais-a-dose-homeopathique" target="_blank" title="Ensemble des billets de la catégorie : Le français à dose homéopathique">l'orthographe</a> et la typographie mais bon... chacun ses manies après tout ! Par ailleurs, dans le même ordre d'idée, et malgré <a href="http://www.nightangel.fr/tutorial-tutoriel-smilies-smiley-smileys-css-line-height-integration-interligne" target="_blank">ce billet</a> dédié à l'intégration des smilies, je suis en train de revoir ma position puisque mon utilisation de ces derniers s'amenuise et tend peut être à disparaître. Mêler conjugaison et smilies ne me paraît pas toujours évident, mais ceci est un autre débat. Donc, revenons-en à <strike>nos moutons</strike> notre bonne vieille typographie et plus particulièrement aux guillemets et aux espaces insécables, qui de nos jours, pourraient même faire retourner <a href="http://fr.wikipedia.org/wiki/Johannes_Gutenberg" target="_blank" title="Johannes Gutenberg sur Wikipedia FR">Gutenberg</a> dans sa tombe. Avec <strong><a href="http://michelf.com/projets/php-smartypants/typographer/" target="_blank">PHP SmartyPants Typographer</a></strong>, ne laissons pas <a href="http://fr.wordpress.org/" target="_blank">WordPress</a> prendre librement toutes les libertés typographiques qui lui conviennent : un guillemet (&laquo;) n'a pourtant aucun rapport avec un guillemet-apostrophe double culbuté (&ldquo;) ; mais allez savoir...</p><span id="more-4748"></span>

<h3>PHP SmartyPants Typographer</h3>

<div align="center"><a href="http://michelf.com/projets/php-smartypants/typographer/" target="_blank"><img src="http://medias.nightangel.fr/2009/10/Capture-d’écran-2009-10-29-à-23.11.13.png" alt="Capture d’écran 2009-10-29 à 23.11.13" title="Capture d’écran 2009-10-29 à 23.11.13" width="571" height="54" class="aligncenter size-full wp-image-4750" border="0" /></a></div>

<p style="text-align:justify;">L'installation du plugin <strong><a href="http://michelf.com/projets/php-smartypants/typographer/" target="_blank">PHP SmartyPants Typographer</a></strong> vous permettra d'avoir une typographie bien meilleure. Un tiret court n'est pas un tiret long, les guillemets typographiques imposent des espaces insécables, etc... Pour en savoir davantage sur le plugin et sa méthode d'installation, je vous invite à découvrir <a href="http://michelf.com/projets/php-smartypants/typographer/" target="_blank">le site officiel</a>.</p>

<h3>Guillemets</h3>

<div align="center"><img src="http://medias.nightangel.fr/2009/10/typographie-guillemets.png" alt="typographie-guillemets" title="typographie-guillemets" width="582" height="373" class="aligncenter size-full wp-image-4749" /><br /><font size="1">Sous Mac OS X (clavier français) Alt-7 et Alt Maj-7 donnent les guillemets français, Alt-3 et Alt-Maj-3 donnent les guillemets anglais.</font></div>

<p style="text-align:justify;">Je ne vais bien sûr pas faire <a href="http://fr.wikipedia.org/wiki/Guillemet" target="_blank">l'apologie des guillemets</a>, ce serait bien trop long et moins évident qu'il n'y paraît. Juste un petit mot pour rappeler qu'en français, on emploie les guillemets typographiques ou français (« »), séparés de l’expression qu’ils mettent en exergue par <u>une espace insécable</u> (fine si possible). A priori, selon certains typographes, les guillemets anglais ( “ ” ) peuvent être employés, sans espace insécable, comme guillemets <u>de second niveau</u> et, en troisième niveau, on peut utiliser des apostrophes directement accolées à l’expression. Cependant en troisième niveau, l’usage de l’italique est préférable.</p>

<h3>Espace et espace insécable fine</h3>

<p style="text-align:justify;">Pour les espaces, c'est un peu moins compliqué, encore que... Il existe deux espaces (certains diront trois, mais moi je dis deux) : une espace et une espace insécable fine. Oui oui <a href="http://www.pincetonfrancais.be/v1/article.php3?id_article=5" target="_blank">on peut dire <strong>une</strong> espace</a>. L'espace fine est tout simplement plus courte que l'espace traditionnelle. Elle est généralement insécable, c'est à dire qu'elle ne peut pas disparaître au profit d'un retour à la ligne par exemple. Vous imaginez bien "1 000 €" avec le "1" sur une ligne et le "000 €" sur une autre ? Non non, là il faut une espace insécable fine ! Et donc pour faire une espace insécable fine sous Mac OS X, il suffit de combiner les touches Alt + barre d'espacement. Sous Windows, je crois que c'est Maj + Ctrl + barre d'espacement ; mais à vérifier...</p>

<h3>Un peu de lecture...</h3>

<a href="http://fr.wikipedia.org/wiki/Typographie" target="_blank">Typographie</a>,
<a href="http://fr.wikipedia.org/wiki/Caractère_(typographie)" target="_blank">Caractère (typographie)</a>,
<a href="http://fr.wikipedia.org/wiki/Espace_insécable" target="_blank">Espace insécable</a>,
<a href="http://fr.wikipedia.org/wiki/Espace_typographique" target="_blank">Espace typographique</a>,
<a href="http://fr.wikipedia.org/wiki/Guillemet" target="_blank">Guilllemet</a>,
<a href="http://marcautret.free.fr/sigma/pratik/typo/guilles/" target="_blank">Œuvrez les guillemets</a>.

<div align="center"><object width="480" height="275"><param name="movie" value="http://www.dailymotion.com/swf/xat45t&related=0"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.dailymotion.com/swf/xat45t&related=0" type="application/x-shockwave-flash" width="480" height="275" allowfullscreen="true" allowscriptaccess="always"></object><br />Retrouvez toutes les vidéos de la série sur <a href="http://www.hellogeekette.com/" target="_blank"><strong>hellogeekette.com</strong></a>.</div>

<p style="text-align:justify;">PS : Bien que le développement ne soit pas terminé, il est désormais possible de <a href="http://www.nightangel.fr/archives" target="_blank">retrouver tous les billets du blog sous forme de calendrier</a> : lien tout en bas à droite de la page d'accueil, au niveau du système de pagination.</p>]]></description>
			<content:encoded><![CDATA[<p><img width="720" height="480" src="http://medias.nightangel.fr/2009/10/wordpress-typographie1.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress-typographie" title="wordpress-typographie" /></p><p style="text-align:justify;">Cela fait maintenant plusieurs années que je publie du contenu sur différentes plates-formes de blogs et j'ai souvent été confronté à des problèmes typographiques. Je suis conscient d'avoir un problème d'ordre maladif entre <a href="http://www.nightangel.fr/category/le-francais-a-dose-homeopathique" target="_blank" title="Ensemble des billets de la catégorie : Le français à dose homéopathique">l'orthographe</a> et la typographie mais bon... chacun ses manies après tout ! Par ailleurs, dans le même ordre d'idée, et malgré <a href="http://www.nightangel.fr/tutorial-tutoriel-smilies-smiley-smileys-css-line-height-integration-interligne" target="_blank">ce billet</a> dédié à l'intégration des smilies, je suis en train de revoir ma position puisque mon utilisation de ces derniers s'amenuise et tend peut être à disparaître. Mêler conjugaison et smilies ne me paraît pas toujours évident, mais ceci est un autre débat. Donc, revenons-en à <strike>nos moutons</strike> notre bonne vieille typographie et plus particulièrement aux guillemets et aux espaces insécables, qui de nos jours, pourraient même faire retourner <a href="http://fr.wikipedia.org/wiki/Johannes_Gutenberg" target="_blank" title="Johannes Gutenberg sur Wikipedia FR">Gutenberg</a> dans sa tombe. Avec <strong><a href="http://michelf.com/projets/php-smartypants/typographer/" target="_blank">PHP SmartyPants Typographer</a></strong>, ne laissons pas <a href="http://fr.wordpress.org/" target="_blank">WordPress</a> prendre librement toutes les libertés typographiques qui lui conviennent : un guillemet (&laquo;) n'a pourtant aucun rapport avec un guillemet-apostrophe double culbuté (&ldquo;) ; mais allez savoir...</p><span id="more-4748"></span>

<h3>PHP SmartyPants Typographer</h3>

<div align="center"><a href="http://michelf.com/projets/php-smartypants/typographer/" target="_blank"><img src="http://medias.nightangel.fr/2009/10/Capture-d’écran-2009-10-29-à-23.11.13.png" alt="Capture d’écran 2009-10-29 à 23.11.13" title="Capture d’écran 2009-10-29 à 23.11.13" width="571" height="54" class="aligncenter size-full wp-image-4750" border="0" /></a></div>

<p style="text-align:justify;">L'installation du plugin <strong><a href="http://michelf.com/projets/php-smartypants/typographer/" target="_blank">PHP SmartyPants Typographer</a></strong> vous permettra d'avoir une typographie bien meilleure. Un tiret court n'est pas un tiret long, les guillemets typographiques imposent des espaces insécables, etc... Pour en savoir davantage sur le plugin et sa méthode d'installation, je vous invite à découvrir <a href="http://michelf.com/projets/php-smartypants/typographer/" target="_blank">le site officiel</a>.</p>

<h3>Guillemets</h3>

<div align="center"><img src="http://medias.nightangel.fr/2009/10/typographie-guillemets.png" alt="typographie-guillemets" title="typographie-guillemets" width="582" height="373" class="aligncenter size-full wp-image-4749" /><br /><font size="1">Sous Mac OS X (clavier français) Alt-7 et Alt Maj-7 donnent les guillemets français, Alt-3 et Alt-Maj-3 donnent les guillemets anglais.</font></div>

<p style="text-align:justify;">Je ne vais bien sûr pas faire <a href="http://fr.wikipedia.org/wiki/Guillemet" target="_blank">l'apologie des guillemets</a>, ce serait bien trop long et moins évident qu'il n'y paraît. Juste un petit mot pour rappeler qu'en français, on emploie les guillemets typographiques ou français (« »), séparés de l’expression qu’ils mettent en exergue par <u>une espace insécable</u> (fine si possible). A priori, selon certains typographes, les guillemets anglais ( “ ” ) peuvent être employés, sans espace insécable, comme guillemets <u>de second niveau</u> et, en troisième niveau, on peut utiliser des apostrophes directement accolées à l’expression. Cependant en troisième niveau, l’usage de l’italique est préférable.</p>

<h3>Espace et espace insécable fine</h3>

<p style="text-align:justify;">Pour les espaces, c'est un peu moins compliqué, encore que... Il existe deux espaces (certains diront trois, mais moi je dis deux) : une espace et une espace insécable fine. Oui oui <a href="http://www.pincetonfrancais.be/v1/article.php3?id_article=5" target="_blank">on peut dire <strong>une</strong> espace</a>. L'espace fine est tout simplement plus courte que l'espace traditionnelle. Elle est généralement insécable, c'est à dire qu'elle ne peut pas disparaître au profit d'un retour à la ligne par exemple. Vous imaginez bien "1 000 €" avec le "1" sur une ligne et le "000 €" sur une autre ? Non non, là il faut une espace insécable fine ! Et donc pour faire une espace insécable fine sous Mac OS X, il suffit de combiner les touches Alt + barre d'espacement. Sous Windows, je crois que c'est Maj + Ctrl + barre d'espacement ; mais à vérifier...</p>

<h3>Un peu de lecture...</h3>

<a href="http://fr.wikipedia.org/wiki/Typographie" target="_blank">Typographie</a>,
<a href="http://fr.wikipedia.org/wiki/Caractère_(typographie)" target="_blank">Caractère (typographie)</a>,
<a href="http://fr.wikipedia.org/wiki/Espace_insécable" target="_blank">Espace insécable</a>,
<a href="http://fr.wikipedia.org/wiki/Espace_typographique" target="_blank">Espace typographique</a>,
<a href="http://fr.wikipedia.org/wiki/Guillemet" target="_blank">Guilllemet</a>,
<a href="http://marcautret.free.fr/sigma/pratik/typo/guilles/" target="_blank">Œuvrez les guillemets</a>.

<div align="center"><object width="480" height="275"><param name="movie" value="http://www.dailymotion.com/swf/xat45t&related=0"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.dailymotion.com/swf/xat45t&related=0" type="application/x-shockwave-flash" width="480" height="275" allowfullscreen="true" allowscriptaccess="always"></object><br />Retrouvez toutes les vidéos de la série sur <a href="http://www.hellogeekette.com/" target="_blank"><strong>hellogeekette.com</strong></a>.</div>

<p style="text-align:justify;">PS : Bien que le développement ne soit pas terminé, il est désormais possible de <a href="http://www.nightangel.fr/archives" target="_blank">retrouver tous les billets du blog sous forme de calendrier</a> : lien tout en bas à droite de la page d'accueil, au niveau du système de pagination.</p>]]></content:encoded>
			<wfw:commentRss>http://www.nightangel.fr/wordpress-typographie-plugin-guillemets-espaces/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WordPress : plusieurs blogs sur une seule installation</title>
		<link>http://www.nightangel.fr/wordpress-plusieurs-blogs-une-seule-installation/</link>
		<comments>http://www.nightangel.fr/wordpress-plusieurs-blogs-une-seule-installation/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 00:59:25 +0000</pubDate>
		<dc:creator>NightAngel</dc:creator>
				<category><![CDATA[Informaticus]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[one installation more databases]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WordPress Multi Domains]]></category>
		<category><![CDATA[WordPress Plusieurs domaines une installation]]></category>
		<category><![CDATA[WordPress une installation plusieurs bases de données]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://www.nightangel.fr/?p=4667</guid>
		<description><![CDATA[<p><img width="720" height="576" src="http://medias.nightangel.fr/2009/09/one-install.jpg" class="attachment-post-thumbnail wp-post-image" alt="one-install" title="one-install" /></p><p style="text-align:justify">Lorsque vous avez un blog et que vous jouez un peu avec, il vous prendra rapidement l'idée d'en avoir plusieurs cyp Un blog perso, un blog pro, et peut être même un blog "de test", et le tout probablement sur plusieurs domaines. Quand il s'agit de mettre à jour tous ces blogs (toutes vos installations de Wordpress), cela demande tout de suite beaucoup de travail et donc de temps :mad: Il serait tout de suite beaucoup plus facile de réaliser ces opérations de maintenance, si vous n'aviez qu'une seule et même installation de WordPress mais plusieurs bases de données connectées à cette même installation :roll: Voici donc comment avoir un WordPress multi-utilisateurs, ou plutôt multi-domaines si vous préférez. Cela n'est pas difficile à mettre en place, il suffit de suivre le guide : <strong>ACTION!</strong> :D </p><span id="more-4667"></span>

<h3>Choisir plusieurs domaines ou sous-domaines...</h3>

<p style="text-align:justify">Nous allons donc avoir une seule installation de WordPress qui va supporter plusieurs domaines ou plusieurs sous-domaines. Il serait également possible de mixer les deux mais ne compliquons pas. Pour l'instant nous supposons que votre installation va supporter (ou accueillir) les domaines : www.domain1.com et www.domain2.com.</p>

<h3>Installer WordPress <em>(facultatif)</em></h3>

<p style="text-align:justify">Vous installez une seule fois WordPress <a href="http://codex.wordpress.org/fr:Installer_WordPress" target="_blank">comme vous le feriez classiquement</a> pour un seul site/domaine. Il s'agit bien sûr de l'installation qui va accueillir vos différents domaines. Cette opération est facultative puisque la modification suivante peut tout à fait être effectuée sur une installation existante.</p>

<h3>Créer les autres bases de données</h3>

<p style="text-align:justify">Comme vous avez un WordPress d'installé, vous avez déjà une base de données. Il va vous falloir autant d'autres bases de données que de noms de domaines supplémentaires. WordPress a besoin de vous pour créer une base de données vide. Si vous pointez sur un domaine dont la base n'est pas encore créé, WordPress va vous en informer et vous demander de sélectionner une base de données. Lorsque la base (vide) est trouvée, vous aurez l'écran de configuration.</p>

<h3>Modifier le fichier "wp-config.php", ici la magie s'opère !</h3>

<p style="text-align:justify">Dans le fichier de configuration <strong>wp-config.php</strong> on va déterminer quel domaine "appelle" l'installation et utiliser telle ou telle base de données en conséquence.</p>

<pre lang="php"><?php $host = $_SERVER['HTTP_HOST'];
$parts = explode('.',$host);
if ($parts[3] = "") {
    $domain = $parts[0];
} else {
    $domain = $parts[1];
}
switch ($domain) {
case "domaine1":
    $db = "database1";
    break;
case "domaine2":
    $db = "database2";
    break;
}
define('DB_NAME', $db);
define('DB_USER', 'user');
define('DB_PASSWORD', 'password');
define('DB_HOST', 'hostname'); ?></pre>

<p style="text-align:justify">Il faut bien sûr remplacer <strong>domaine1</strong> et <strong>domaine2</strong> par vos domaines et <strong>database1</strong> et <strong>database2</strong> par les bases de données qui doivent être respectivement utilisées.</p>

<p style="text-align:justify">Nous supposons ici que toutes vos bases se trouvent sur le même serveur de bases de données ('DB_HOST') et que le même utilisateur ('DB_USER' et 'DB_PASSWORD') a les privilèges nécessaires sur ces mêmes bases. Si tel n'est pas le cas, <a href="http://codeispoetry.net/" target="_blank">libre à vous de modifier le script à votre guise</a>. Par exemple :</p>

<pre lang="php"><?php $host = $_SERVER['HTTP_HOST'];
$parts = explode('.',$host);
if ($parts[3] = "") {
    $domain = $parts[0];
} else {
    $domain = $parts[1];
}
switch ($domain) {
case "domaine1":
    $db = "database1";
    $user = "user1";
    $password = "password1";
    $hostname = "hostname1";
    break;
case "domaine2":
    $db = "database2";
    $user = "user2";
    $password = "password2";
    $hostname = "hostname2";
    break;
}
define('DB_NAME', $db);
define('DB_USER', $user);
define('DB_PASSWORD', $password);
define('DB_HOST', $hostname); ?></pre>

<h3>Pour finir...</h3>

<p style="text-align:justify">Pour être sûr que rien ne se mélange, vous devez effectuer une dernière modification dans le panneau d'administration <u>de chaque domaine</u>. Rendez-vous dans "Réglages" ("Options" en anglais) -> "Divers" ("Miscellaneous" en anglais) et changer le contenu du champ <em>"Stocker les fichiers envoyés dans ce dossier"</em> par <strong>wp-content/uploads/domaine</strong>. Remplacez bien sûr "domaine" par le nom de domaine correspondant. Cette modification évite que tous les fichiers que vous allez envoyer (uploader) ne soient stockés dans le même répertoire (uploads) alors qu'ils proviennent finalement de "différents blogs".</p>

<h3>Informations complémentaires...</h3>

<p style="text-align:justify">Cette méthode vaut ce qu'elle vaut mais elle a quand même le mérite d'exister. Il existe cependant d'autres méthodes plus ou moins performantes (souvent moins) et plus ou moins complexes (souvent plus). Disons que vous avez sous les yeux une méthode que j'ai testé, qui est "light" et relativement accessible. Au delà de ça il est toujours possible d'imaginer X autres solutions. On pourrait par exemple tout stocker dans une base de données mais ne compliquons pas les choses, il s'agit d'un tuto ! Quoiqu'il en soit, si ces autres méthodes vous intéressent, je propose aussi de lire <strong><a href="http://me.mywebsight.ws/2006/08/11/host-multiple-wp-sites-on-one-installation/" target="_blank">Host multiple WP sites on one installation</a></strong> de LobsterMan et <strong><a href="http://www.bos89.nl/how-to-multiple-blogs-one-wordpress-installation/" target="_blank">How to: multiple blogs, one Wordpress installation</a></strong> de Martijn Stegink. Si vous souhaitez comprendre un peu ce que font ces lignes de code, <a href="http://fr2.php.net/manual/fr/index.php" target="_blank">la documentation PHP</a> pourrait également vous être utile.</p>

<p style="text-align:justify">Comme d'habitude, si vous avez besoin d'aide, des questions, des remarques, des suggestions ou juste envie de vous suicider, le système de commentaires est fait pour ça :razz: </p>]]></description>
			<content:encoded><![CDATA[<p><img width="720" height="576" src="http://medias.nightangel.fr/2009/09/one-install.jpg" class="attachment-post-thumbnail wp-post-image" alt="one-install" title="one-install" /></p><p style="text-align:justify">Lorsque vous avez un blog et que vous jouez un peu avec, il vous prendra rapidement l'idée d'en avoir plusieurs cyp Un blog perso, un blog pro, et peut être même un blog "de test", et le tout probablement sur plusieurs domaines. Quand il s'agit de mettre à jour tous ces blogs (toutes vos installations de Wordpress), cela demande tout de suite beaucoup de travail et donc de temps :mad: Il serait tout de suite beaucoup plus facile de réaliser ces opérations de maintenance, si vous n'aviez qu'une seule et même installation de WordPress mais plusieurs bases de données connectées à cette même installation :roll: Voici donc comment avoir un WordPress multi-utilisateurs, ou plutôt multi-domaines si vous préférez. Cela n'est pas difficile à mettre en place, il suffit de suivre le guide : <strong>ACTION!</strong> :D </p><span id="more-4667"></span>

<h3>Choisir plusieurs domaines ou sous-domaines...</h3>

<p style="text-align:justify">Nous allons donc avoir une seule installation de WordPress qui va supporter plusieurs domaines ou plusieurs sous-domaines. Il serait également possible de mixer les deux mais ne compliquons pas. Pour l'instant nous supposons que votre installation va supporter (ou accueillir) les domaines : www.domain1.com et www.domain2.com.</p>

<h3>Installer WordPress <em>(facultatif)</em></h3>

<p style="text-align:justify">Vous installez une seule fois WordPress <a href="http://codex.wordpress.org/fr:Installer_WordPress" target="_blank">comme vous le feriez classiquement</a> pour un seul site/domaine. Il s'agit bien sûr de l'installation qui va accueillir vos différents domaines. Cette opération est facultative puisque la modification suivante peut tout à fait être effectuée sur une installation existante.</p>

<h3>Créer les autres bases de données</h3>

<p style="text-align:justify">Comme vous avez un WordPress d'installé, vous avez déjà une base de données. Il va vous falloir autant d'autres bases de données que de noms de domaines supplémentaires. WordPress a besoin de vous pour créer une base de données vide. Si vous pointez sur un domaine dont la base n'est pas encore créé, WordPress va vous en informer et vous demander de sélectionner une base de données. Lorsque la base (vide) est trouvée, vous aurez l'écran de configuration.</p>

<h3>Modifier le fichier "wp-config.php", ici la magie s'opère !</h3>

<p style="text-align:justify">Dans le fichier de configuration <strong>wp-config.php</strong> on va déterminer quel domaine "appelle" l'installation et utiliser telle ou telle base de données en conséquence.</p>

<pre lang="php"><?php $host = $_SERVER['HTTP_HOST'];
$parts = explode('.',$host);
if ($parts[3] = "") {
    $domain = $parts[0];
} else {
    $domain = $parts[1];
}
switch ($domain) {
case "domaine1":
    $db = "database1";
    break;
case "domaine2":
    $db = "database2";
    break;
}
define('DB_NAME', $db);
define('DB_USER', 'user');
define('DB_PASSWORD', 'password');
define('DB_HOST', 'hostname'); ?></pre>

<p style="text-align:justify">Il faut bien sûr remplacer <strong>domaine1</strong> et <strong>domaine2</strong> par vos domaines et <strong>database1</strong> et <strong>database2</strong> par les bases de données qui doivent être respectivement utilisées.</p>

<p style="text-align:justify">Nous supposons ici que toutes vos bases se trouvent sur le même serveur de bases de données ('DB_HOST') et que le même utilisateur ('DB_USER' et 'DB_PASSWORD') a les privilèges nécessaires sur ces mêmes bases. Si tel n'est pas le cas, <a href="http://codeispoetry.net/" target="_blank">libre à vous de modifier le script à votre guise</a>. Par exemple :</p>

<pre lang="php"><?php $host = $_SERVER['HTTP_HOST'];
$parts = explode('.',$host);
if ($parts[3] = "") {
    $domain = $parts[0];
} else {
    $domain = $parts[1];
}
switch ($domain) {
case "domaine1":
    $db = "database1";
    $user = "user1";
    $password = "password1";
    $hostname = "hostname1";
    break;
case "domaine2":
    $db = "database2";
    $user = "user2";
    $password = "password2";
    $hostname = "hostname2";
    break;
}
define('DB_NAME', $db);
define('DB_USER', $user);
define('DB_PASSWORD', $password);
define('DB_HOST', $hostname); ?></pre>

<h3>Pour finir...</h3>

<p style="text-align:justify">Pour être sûr que rien ne se mélange, vous devez effectuer une dernière modification dans le panneau d'administration <u>de chaque domaine</u>. Rendez-vous dans "Réglages" ("Options" en anglais) -> "Divers" ("Miscellaneous" en anglais) et changer le contenu du champ <em>"Stocker les fichiers envoyés dans ce dossier"</em> par <strong>wp-content/uploads/domaine</strong>. Remplacez bien sûr "domaine" par le nom de domaine correspondant. Cette modification évite que tous les fichiers que vous allez envoyer (uploader) ne soient stockés dans le même répertoire (uploads) alors qu'ils proviennent finalement de "différents blogs".</p>

<h3>Informations complémentaires...</h3>

<p style="text-align:justify">Cette méthode vaut ce qu'elle vaut mais elle a quand même le mérite d'exister. Il existe cependant d'autres méthodes plus ou moins performantes (souvent moins) et plus ou moins complexes (souvent plus). Disons que vous avez sous les yeux une méthode que j'ai testé, qui est "light" et relativement accessible. Au delà de ça il est toujours possible d'imaginer X autres solutions. On pourrait par exemple tout stocker dans une base de données mais ne compliquons pas les choses, il s'agit d'un tuto ! Quoiqu'il en soit, si ces autres méthodes vous intéressent, je propose aussi de lire <strong><a href="http://me.mywebsight.ws/2006/08/11/host-multiple-wp-sites-on-one-installation/" target="_blank">Host multiple WP sites on one installation</a></strong> de LobsterMan et <strong><a href="http://www.bos89.nl/how-to-multiple-blogs-one-wordpress-installation/" target="_blank">How to: multiple blogs, one Wordpress installation</a></strong> de Martijn Stegink. Si vous souhaitez comprendre un peu ce que font ces lignes de code, <a href="http://fr2.php.net/manual/fr/index.php" target="_blank">la documentation PHP</a> pourrait également vous être utile.</p>

<p style="text-align:justify">Comme d'habitude, si vous avez besoin d'aide, des questions, des remarques, des suggestions ou juste envie de vous suicider, le système de commentaires est fait pour ça :razz: </p>]]></content:encoded>
			<wfw:commentRss>http://www.nightangel.fr/wordpress-plusieurs-blogs-une-seule-installation/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>WordPress &amp; Moi</title>
		<link>http://www.nightangel.fr/developper-wordpress-developer-nightangel/</link>
		<comments>http://www.nightangel.fr/developper-wordpress-developer-nightangel/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 23:44:21 +0000</pubDate>
		<dc:creator>NightAngel</dc:creator>
				<category><![CDATA[Informaticus]]></category>
		<category><![CDATA[My life]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[CMS comparisons]]></category>
		<category><![CDATA[comparaison de CMS]]></category>
		<category><![CDATA[Dotclear]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Drupal ou WordPress]]></category>
		<category><![CDATA[Drupal vs WordPress]]></category>
		<category><![CDATA[GNU GPL]]></category>
		<category><![CDATA[HTML4]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Matthew Mullenweg]]></category>
		<category><![CDATA[Michel Valdrighi]]></category>
		<category><![CDATA[Movable Type]]></category>
		<category><![CDATA[MySQL 3.23.19]]></category>
		<category><![CDATA[Nightly Builds]]></category>
		<category><![CDATA[TextPattern]]></category>
		<category><![CDATA[Typo3]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WordPress 2.0.4]]></category>
		<category><![CDATA[WordPress Developer]]></category>
		<category><![CDATA[WordPress ou Dotclear]]></category>
		<category><![CDATA[WordPress vs Drupal]]></category>

		<guid isPermaLink="false">http://www.nightangel.fr/?p=4046</guid>
		<description><![CDATA[<p><img width="720" height="486" src="http://medias.nightangel.fr/2009/08/wordpress-developer-girl.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress-developer-girl" title="wordpress-developer-girl" /></p><p style="text-align:justify">Certains le savent déjà, d'autres non, et ça ne changera probablement pas leur vie, mais je suis notamment <strong>développeur WordPress</strong>. Je vais parler ici du côté communautaire et non lucratif de cette plate-forme. D'ailleurs il faudra que je revienne sur cet aspect lors d'un prochain billet car OUI il y a moyen de gagner de l'argent avec un CMS : c'est dit! Etant impliqué dans ce projet auquel j'accorde beaucoup de temps, je vais donc naturellement tenter de vous présenter succinctement WordPress et surtout ce que je fais au sein de cette communauté qui ne cesse de s'accroître.</p><span id="more-4046"></span>

<h3>WordPress qu'est ce que c'est ?</h3>

<p style="text-align:justify">Je ne compte pas vous copier/coller une définition issue de <a href="http://fr.wikipedia.org/wiki/WordPress" target="_blank">fr.wikipedia.org</a> ou de <a href="http://fr.wordpress.org/" target="_blank">fr.wordpress.org</a>. D'une part parce que les termes techniques employés dans la première n'intéressent finalement pas grand monde et d'autre part, parce que le jargon marketing de la seconde ne correspond pas à l'esprit de mon blog. Je vais donc y aller de ma petite définition à la truelle...</p>

<div id="cadre"><p style="text-align:justify"><strong><a href="http://wordpress.org/" target="_blank">WordPress</a></strong> est un système de gestion de contenu (<a href="http://fr.wikipedia.org/wiki/Licence_publique_générale_GNU" target="_blank">GNU GPL</a>) qui est essentiellement utilisé comme moteur de blog, mais ses fonctionnalités lui permettent également de gérer n'importe quel site web. On notera au passage que <a href="http://wordpress.com" target="_blank">WordPress.com</a> est un service basé sur WordPress et qui permet de créer votre blog gratuitement.</p></div>

<p style="text-align:justify">Et un p'tit historique succinct pour le côté familial...</p>

<div id="cadre"><p style="text-align:justify"><strong><a href="http://wordpress.org/" target="_blank">WordPress</a></strong> a vu le jour en 2003 comme une évolution (fork) du logiciel « b2 » créé par <a href="http://intraordinaire.com/" target="_blank">Michel Valdrighi</a> en 2001. Développé principalement par <a href="http://ma.tt/" target="_blank">Matthew Mullenweg</a> (une amie eut l'inspiration du nom), <a href="http://codex.wordpress.org/WordPress_Versions" target="_blank">les versions de WordPress sont nommées d'après de grandes vedettes du jazz</a> (<a href="http://fr.wikipedia.org/wiki/Charles_Mingus" target="_blank">Mingus</a>, <a href="http://fr.wikipedia.org/wiki/Billy_Strayhorn" target="_blank">Strayhorn</a>, <a href="http://fr.wikipedia.org/wiki/Duke_Ellington" target="_blank">Duke</a>, <a href="http://fr.wikipedia.org/wiki/Ella_Fitzgerald" target="_blank">Ella</a>, <a href="http://fr.wikipedia.org/wiki/Stan_Getz" target="_blank">Getz</a>, <a href="http://codex.wordpress.org/WordPress_Versions" target="_blank">etc</a>). WordPress a été téléchargé plus de 900.000 fois en 2005, 1.545.703 téléchargements en 2006 et 3.816.965 en 2007 ! WordPress est notamment <a href=" http://wordpress.org/showcase/tag/fortune-500/" target="_blank">utilisé par plusieurs sociétés</a> qui figurent au classement <a href="http://fr.wikipedia.org/wiki/Fortune_500" target="_blank">Fortune 500</a>.</p></div>

<h3>Pourquoi WordPress ?</h3>

<p style="text-align:justify">J'ai commencé à "bloguer" il y a une dizaine d'années, époque où ce terme n'existait pas :arrow: A vrai dire je n'avais pas même conscience de ce que je faisais, aucune plate-forme n'était prévue à cet effet et j'avais donc codé mon <strike>blog</strike> site personnel "à la main". C'était en 1998, j'avais tout codé en statique (<a href="http://fr.wikipedia.org/wiki/Html#1997_:_HTML_3.2._et_4.0" target="_blank">HTML4</a>) et ce n'est que deux ans plus tard (2000) que mon blog "fait maison" a reçu son ultime modification avec ma première intégration d'une base <a href="http://lists.mysql.com/mysql/41900" target="_blank">MySQL 3.23.19</a> -> <a href="http://medias.nightangel.fr/2009/08/nightangel-mano.jpg" target="_blank">capture d'écran !</a> :shock: Le XXIe siècle m'a fait découvrir le phénomène du blog et j'ai alors migré mon site perso vers la seule plate-forme (française qui plus est) digne de ce nom à l'époque : Dotclear 0.9/1.2 (développé par <a href="http://neokraft.net/" target="_blank">Olivier Meunier</a>) :W Malgré son excellente qualité pour l'époque, trop impatient d'attendre <a href="http://fr.dotclear.org/blog/post/2008/08/01/Sortie-de-Dotclear-20" target="_blank">la V2 (sortie en 2008)</a>, j'ai (honteusement?) switché sur <a href="http://wordpress.org/development/2006/07/wordpress-204/" target="_blank">WordPress 2.0.4</a> <a href="http://www.nightangel.fr/migration-vers-wordpress-21" target="_blank">en 2006</a>. Il n'y avait pas d'autres solutions (ou elles étaient à leurs balbutiements) et c'est donc il y a près de 3 ans que l'aventure WordPress a commencé pour moi :eek2: Bien qu'à l'heure actuelle les projets les plus proches soient certainement <a href="http://drupalfr.org/" target="_blank">Drupal</a>, <a href="http://www.movabletype.org/" target="_blank">Movable Type</a> et <a href="http://textpattern.com/" target="_blank">TextPattern</a> ; je ne compte pas en changer.</p>

<div id="cadre"><p style="text-align:justify">De nombreux sites comparent les solutions disponibles et c'est Drupal qui est souvent comparé à WordPress. Rappelons qu'il était impossible <u>initialement</u> de comparer WordPress qui <u>était</u> un outil de blogging, à Drupal qui a toujours été un CMS. Impossible de communiquer une liste exhaustive des comparatifs mais en voici quelques uns : <a href="http://weblogtoolscollection.com/archives/2007/09/17/wordpress-vs-drupal/" target="_blank"><em>Wordpress vs Drupal</em></a>, <a href="http://blogs.zdnet.com/open-source/?p=3054" target="_blank"><em>Can Drupal beat Wordpress?</em></a>, <a href="http://graduallythensuddenly.com/2008/05/04/wordpress-drupal-irrelevant/" target="_blank"><em>Why WordPress Will Make Drupal Irrelevant</em></a>, <a href="http://drupal.org/node/29364" target="_blank"><em>What's in a reputation?</em></a>, <a href="http://www.linux.com/archive/feature/60948" target="_blank"><em>Which is better for blogging?</em></a>, ...</p></div>

<h3>Qu'est ce que j'y fais concrètement ?</h3>

<p style="text-align:justify">L'esprit communautaire du projet et le fait que mes contributions ne soient pas (directement) rémunérées, me permet une grande flexibilité notamment par rapport à mon boulot et à ma vie privée :nickel: Quand je n'ai pas énormément de temps et que je ne suis pas d'humeur à "bouffer du code", j'effectue généralement un <strong>travail de traduction</strong> (anglais->français) du <a href="http://codex.wordpress.org/" target="_blank">Codex</a> (centre de documentation) -> <a href="http://codex.wordpress.org/User:NightAngel" target="_blank">mon profil</a> et <a href="http://codex.wordpress.org/Special:Contributions/NightAngel" target="_blank">mes contributions</a> :cool: C'est tout récent mais il m'arrive également <em>(<a href="http://www.geekeries.fr/a-propos/" target="_blank">Merci Valentin</a>)</em> de <strong>présenter des plugins sur <a href="http://www.geekeries.fr/" target="_blank">geekeries.fr</a></strong> -> <a href="http://www.geekeries.fr/articles/rapatrier-images-hebergees-sites-distants/#post-3785" target="_blank">Dernier article en date</a>. Parfois <strong>je communique <a href="http://wordpress.org/extend/ideas/profile.php?id=142934" target="_blank">mes idées d'évolution</a></strong> au reste de l'équipe, mais ça reste très marginal car je préfère agir (coder) que parler (proposer) -> <a href="http://wordpress.org/extend/ideas/topic.php?id=3047" target="_blank">ma dernière proposition</a> :oops: Bien qu'ayant aidé au développement de plusieurs plugins par l'intermédiaire de forums de supports, je ne suis l'auteur exclusif d'aucun : j'ai horreur de venir "coller des verrues" (à mes yeux, plugins=verrues) sur un code :evil: Surtout que la plupart du temps, on peut se passer de plugin, en procédant à une "intégration native" du code, dans <a href="http://codex.wordpress.org/Theme_Development#Theme_Template_Files" target="_blank">les fichiers de thèmes</a> (par l'intermédiaire <a href="http://codex.wordpress.org/Template_Tags" target="_blank">des marqueurs de modèles</a> et <a href="http://codex.wordpress.org/Conditional_Tags" target="_blank">des marqueurs conditionnels</a>), et plus particulièrement dans <a href="http://codex.wordpress.org/Theme_Development#Theme_Functions_File" target="_blank">le fichier functions.php</a> (par l'intermédiaire <a href="http://codex.wordpress.org/Function_Reference" target="_blank">des fonctions de référence</a>). Je suis également <strong>testeur</strong> (<a href="http://lists.automattic.com/mailman/listinfo/wp-testers" target="_blank">devenir testeur?</a>), je discute des différentes versions (<a href="http://wordpress.org/download/nightly/" target="_blank">nightly</a>, <a href="http://wordpress.org/download/beta/" target="_blank">alpha&beta</a>) et je <strong>rapporte des bugs</strong> sur <a href="http://core.trac.wordpress.org/" target="_blank">le trac</a>. Et sinon <strong>je développe WordPress</strong>, c'est bien la tache la plus "lourde" ! <a href="http://core.trac.wordpress.org/" target="_blank">Je consulte d'abord le trac</a> (histoire de ne pas être complètement à l'ouest), <a href="http://codex.wordpress.org/Using_Subversion" target="_blank">je télécharge le SVN</a> et vas-y développe -> <a href="http://core.trac.wordpress.org/report/16" target="_blank">tester des patchs</a>, <a href="http://core.trac.wordpress.org/report/13" target="_blank">appliquer des patchs</a>, etc... </p>

<h3>Et puis voilà !</h3>

<p style="text-align:justify">Pour finir, je viens d'actualiser une documentation assez complète que j'avais rédigé il y a plusieurs mois : <strong><a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/16" target="_blank">Protéger votre WordPress du grand méchant loup</a></strong>. Il faudrait que je trouve le temps de la traduire en anglais et d'en faire un fichier pdf mais... ultérieurement ! Voilà, je pense avoir tout dit à propos de mon implication dans le projet WordPress :razz: Pour les personnes désireuses de découvrir WordPress, je ne peux que les encourager à lire cette publication du <a href="http://codex.wordpress.org/fr:Accueil" target="_blank">Codex français</a> : <strong><a href="http://codex.wordpress.org/fr:Nouveau_sur_WordPress_-_Ou_commencer" target="_blank">Nouveau sur WordPress - Où commencer ?</a></strong> :roll: Pour l'instant, les développeurs ne trouveront leur bonheur que dans <a href="http://codex.wordpress.org/Main_Page" target="_blank">le Codex Anglophone</a> car, malgré une importante mobilisation des traducteurs, la déclinaison française est loin d'être aussi riche que son équivalent US : ça arrive, ça arrive! cyp Sinon pour ce qui est des projets au sein de la communauté, ça fait quelques temps que l'idée d'organiser un <a href="http://central.wordcamp.org/" target="_blank"><strong>WordCamp</strong></a> fait son chemin mais rien de bien concret pour l'instant.</p>

<div align="center"><a href="http://wordpress.org" target="_blank"><img src="http://medias.nightangel.fr/2009/08/wp-2.0-button-trans.gif" border="0" alt="WordPress"></a><br /><br /><object width="640" height="505"><param name="movie" value="http://www.youtube.com/v/Eg3KIksyCUs&hl=fr&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Eg3KIksyCUs&hl=fr&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="505"></embed></object></div>]]></description>
			<content:encoded><![CDATA[<p><img width="720" height="486" src="http://medias.nightangel.fr/2009/08/wordpress-developer-girl.jpg" class="attachment-post-thumbnail wp-post-image" alt="wordpress-developer-girl" title="wordpress-developer-girl" /></p><p style="text-align:justify">Certains le savent déjà, d'autres non, et ça ne changera probablement pas leur vie, mais je suis notamment <strong>développeur WordPress</strong>. Je vais parler ici du côté communautaire et non lucratif de cette plate-forme. D'ailleurs il faudra que je revienne sur cet aspect lors d'un prochain billet car OUI il y a moyen de gagner de l'argent avec un CMS : c'est dit! Etant impliqué dans ce projet auquel j'accorde beaucoup de temps, je vais donc naturellement tenter de vous présenter succinctement WordPress et surtout ce que je fais au sein de cette communauté qui ne cesse de s'accroître.</p><span id="more-4046"></span>

<h3>WordPress qu'est ce que c'est ?</h3>

<p style="text-align:justify">Je ne compte pas vous copier/coller une définition issue de <a href="http://fr.wikipedia.org/wiki/WordPress" target="_blank">fr.wikipedia.org</a> ou de <a href="http://fr.wordpress.org/" target="_blank">fr.wordpress.org</a>. D'une part parce que les termes techniques employés dans la première n'intéressent finalement pas grand monde et d'autre part, parce que le jargon marketing de la seconde ne correspond pas à l'esprit de mon blog. Je vais donc y aller de ma petite définition à la truelle...</p>

<div id="cadre"><p style="text-align:justify"><strong><a href="http://wordpress.org/" target="_blank">WordPress</a></strong> est un système de gestion de contenu (<a href="http://fr.wikipedia.org/wiki/Licence_publique_générale_GNU" target="_blank">GNU GPL</a>) qui est essentiellement utilisé comme moteur de blog, mais ses fonctionnalités lui permettent également de gérer n'importe quel site web. On notera au passage que <a href="http://wordpress.com" target="_blank">WordPress.com</a> est un service basé sur WordPress et qui permet de créer votre blog gratuitement.</p></div>

<p style="text-align:justify">Et un p'tit historique succinct pour le côté familial...</p>

<div id="cadre"><p style="text-align:justify"><strong><a href="http://wordpress.org/" target="_blank">WordPress</a></strong> a vu le jour en 2003 comme une évolution (fork) du logiciel « b2 » créé par <a href="http://intraordinaire.com/" target="_blank">Michel Valdrighi</a> en 2001. Développé principalement par <a href="http://ma.tt/" target="_blank">Matthew Mullenweg</a> (une amie eut l'inspiration du nom), <a href="http://codex.wordpress.org/WordPress_Versions" target="_blank">les versions de WordPress sont nommées d'après de grandes vedettes du jazz</a> (<a href="http://fr.wikipedia.org/wiki/Charles_Mingus" target="_blank">Mingus</a>, <a href="http://fr.wikipedia.org/wiki/Billy_Strayhorn" target="_blank">Strayhorn</a>, <a href="http://fr.wikipedia.org/wiki/Duke_Ellington" target="_blank">Duke</a>, <a href="http://fr.wikipedia.org/wiki/Ella_Fitzgerald" target="_blank">Ella</a>, <a href="http://fr.wikipedia.org/wiki/Stan_Getz" target="_blank">Getz</a>, <a href="http://codex.wordpress.org/WordPress_Versions" target="_blank">etc</a>). WordPress a été téléchargé plus de 900.000 fois en 2005, 1.545.703 téléchargements en 2006 et 3.816.965 en 2007 ! WordPress est notamment <a href=" http://wordpress.org/showcase/tag/fortune-500/" target="_blank">utilisé par plusieurs sociétés</a> qui figurent au classement <a href="http://fr.wikipedia.org/wiki/Fortune_500" target="_blank">Fortune 500</a>.</p></div>

<h3>Pourquoi WordPress ?</h3>

<p style="text-align:justify">J'ai commencé à "bloguer" il y a une dizaine d'années, époque où ce terme n'existait pas :arrow: A vrai dire je n'avais pas même conscience de ce que je faisais, aucune plate-forme n'était prévue à cet effet et j'avais donc codé mon <strike>blog</strike> site personnel "à la main". C'était en 1998, j'avais tout codé en statique (<a href="http://fr.wikipedia.org/wiki/Html#1997_:_HTML_3.2._et_4.0" target="_blank">HTML4</a>) et ce n'est que deux ans plus tard (2000) que mon blog "fait maison" a reçu son ultime modification avec ma première intégration d'une base <a href="http://lists.mysql.com/mysql/41900" target="_blank">MySQL 3.23.19</a> -> <a href="http://medias.nightangel.fr/2009/08/nightangel-mano.jpg" target="_blank">capture d'écran !</a> :shock: Le XXIe siècle m'a fait découvrir le phénomène du blog et j'ai alors migré mon site perso vers la seule plate-forme (française qui plus est) digne de ce nom à l'époque : Dotclear 0.9/1.2 (développé par <a href="http://neokraft.net/" target="_blank">Olivier Meunier</a>) :W Malgré son excellente qualité pour l'époque, trop impatient d'attendre <a href="http://fr.dotclear.org/blog/post/2008/08/01/Sortie-de-Dotclear-20" target="_blank">la V2 (sortie en 2008)</a>, j'ai (honteusement?) switché sur <a href="http://wordpress.org/development/2006/07/wordpress-204/" target="_blank">WordPress 2.0.4</a> <a href="http://www.nightangel.fr/migration-vers-wordpress-21" target="_blank">en 2006</a>. Il n'y avait pas d'autres solutions (ou elles étaient à leurs balbutiements) et c'est donc il y a près de 3 ans que l'aventure WordPress a commencé pour moi :eek2: Bien qu'à l'heure actuelle les projets les plus proches soient certainement <a href="http://drupalfr.org/" target="_blank">Drupal</a>, <a href="http://www.movabletype.org/" target="_blank">Movable Type</a> et <a href="http://textpattern.com/" target="_blank">TextPattern</a> ; je ne compte pas en changer.</p>

<div id="cadre"><p style="text-align:justify">De nombreux sites comparent les solutions disponibles et c'est Drupal qui est souvent comparé à WordPress. Rappelons qu'il était impossible <u>initialement</u> de comparer WordPress qui <u>était</u> un outil de blogging, à Drupal qui a toujours été un CMS. Impossible de communiquer une liste exhaustive des comparatifs mais en voici quelques uns : <a href="http://weblogtoolscollection.com/archives/2007/09/17/wordpress-vs-drupal/" target="_blank"><em>Wordpress vs Drupal</em></a>, <a href="http://blogs.zdnet.com/open-source/?p=3054" target="_blank"><em>Can Drupal beat Wordpress?</em></a>, <a href="http://graduallythensuddenly.com/2008/05/04/wordpress-drupal-irrelevant/" target="_blank"><em>Why WordPress Will Make Drupal Irrelevant</em></a>, <a href="http://drupal.org/node/29364" target="_blank"><em>What's in a reputation?</em></a>, <a href="http://www.linux.com/archive/feature/60948" target="_blank"><em>Which is better for blogging?</em></a>, ...</p></div>

<h3>Qu'est ce que j'y fais concrètement ?</h3>

<p style="text-align:justify">L'esprit communautaire du projet et le fait que mes contributions ne soient pas (directement) rémunérées, me permet une grande flexibilité notamment par rapport à mon boulot et à ma vie privée :nickel: Quand je n'ai pas énormément de temps et que je ne suis pas d'humeur à "bouffer du code", j'effectue généralement un <strong>travail de traduction</strong> (anglais->français) du <a href="http://codex.wordpress.org/" target="_blank">Codex</a> (centre de documentation) -> <a href="http://codex.wordpress.org/User:NightAngel" target="_blank">mon profil</a> et <a href="http://codex.wordpress.org/Special:Contributions/NightAngel" target="_blank">mes contributions</a> :cool: C'est tout récent mais il m'arrive également <em>(<a href="http://www.geekeries.fr/a-propos/" target="_blank">Merci Valentin</a>)</em> de <strong>présenter des plugins sur <a href="http://www.geekeries.fr/" target="_blank">geekeries.fr</a></strong> -> <a href="http://www.geekeries.fr/articles/rapatrier-images-hebergees-sites-distants/#post-3785" target="_blank">Dernier article en date</a>. Parfois <strong>je communique <a href="http://wordpress.org/extend/ideas/profile.php?id=142934" target="_blank">mes idées d'évolution</a></strong> au reste de l'équipe, mais ça reste très marginal car je préfère agir (coder) que parler (proposer) -> <a href="http://wordpress.org/extend/ideas/topic.php?id=3047" target="_blank">ma dernière proposition</a> :oops: Bien qu'ayant aidé au développement de plusieurs plugins par l'intermédiaire de forums de supports, je ne suis l'auteur exclusif d'aucun : j'ai horreur de venir "coller des verrues" (à mes yeux, plugins=verrues) sur un code :evil: Surtout que la plupart du temps, on peut se passer de plugin, en procédant à une "intégration native" du code, dans <a href="http://codex.wordpress.org/Theme_Development#Theme_Template_Files" target="_blank">les fichiers de thèmes</a> (par l'intermédiaire <a href="http://codex.wordpress.org/Template_Tags" target="_blank">des marqueurs de modèles</a> et <a href="http://codex.wordpress.org/Conditional_Tags" target="_blank">des marqueurs conditionnels</a>), et plus particulièrement dans <a href="http://codex.wordpress.org/Theme_Development#Theme_Functions_File" target="_blank">le fichier functions.php</a> (par l'intermédiaire <a href="http://codex.wordpress.org/Function_Reference" target="_blank">des fonctions de référence</a>). Je suis également <strong>testeur</strong> (<a href="http://lists.automattic.com/mailman/listinfo/wp-testers" target="_blank">devenir testeur?</a>), je discute des différentes versions (<a href="http://wordpress.org/download/nightly/" target="_blank">nightly</a>, <a href="http://wordpress.org/download/beta/" target="_blank">alpha&beta</a>) et je <strong>rapporte des bugs</strong> sur <a href="http://core.trac.wordpress.org/" target="_blank">le trac</a>. Et sinon <strong>je développe WordPress</strong>, c'est bien la tache la plus "lourde" ! <a href="http://core.trac.wordpress.org/" target="_blank">Je consulte d'abord le trac</a> (histoire de ne pas être complètement à l'ouest), <a href="http://codex.wordpress.org/Using_Subversion" target="_blank">je télécharge le SVN</a> et vas-y développe -> <a href="http://core.trac.wordpress.org/report/16" target="_blank">tester des patchs</a>, <a href="http://core.trac.wordpress.org/report/13" target="_blank">appliquer des patchs</a>, etc... </p>

<h3>Et puis voilà !</h3>

<p style="text-align:justify">Pour finir, je viens d'actualiser une documentation assez complète que j'avais rédigé il y a plusieurs mois : <strong><a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/16" target="_blank">Protéger votre WordPress du grand méchant loup</a></strong>. Il faudrait que je trouve le temps de la traduire en anglais et d'en faire un fichier pdf mais... ultérieurement ! Voilà, je pense avoir tout dit à propos de mon implication dans le projet WordPress :razz: Pour les personnes désireuses de découvrir WordPress, je ne peux que les encourager à lire cette publication du <a href="http://codex.wordpress.org/fr:Accueil" target="_blank">Codex français</a> : <strong><a href="http://codex.wordpress.org/fr:Nouveau_sur_WordPress_-_Ou_commencer" target="_blank">Nouveau sur WordPress - Où commencer ?</a></strong> :roll: Pour l'instant, les développeurs ne trouveront leur bonheur que dans <a href="http://codex.wordpress.org/Main_Page" target="_blank">le Codex Anglophone</a> car, malgré une importante mobilisation des traducteurs, la déclinaison française est loin d'être aussi riche que son équivalent US : ça arrive, ça arrive! cyp Sinon pour ce qui est des projets au sein de la communauté, ça fait quelques temps que l'idée d'organiser un <a href="http://central.wordcamp.org/" target="_blank"><strong>WordCamp</strong></a> fait son chemin mais rien de bien concret pour l'instant.</p>

<div align="center"><a href="http://wordpress.org" target="_blank"><img src="http://medias.nightangel.fr/2009/08/wp-2.0-button-trans.gif" border="0" alt="WordPress"></a><br /><br /><object width="640" height="505"><param name="movie" value="http://www.youtube.com/v/Eg3KIksyCUs&hl=fr&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Eg3KIksyCUs&hl=fr&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="505"></embed></object></div>]]></content:encoded>
			<wfw:commentRss>http://www.nightangel.fr/developper-wordpress-developer-nightangel/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>WordPress &#8211; Afficher une miniature de la première image de vos billets</title>
		<link>http://www.nightangel.fr/wordpress-miniature-afficher-recuperer-premiere-image-page-accueil-index-first-image/</link>
		<comments>http://www.nightangel.fr/wordpress-miniature-afficher-recuperer-premiere-image-page-accueil-index-first-image/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 03:33:12 +0000</pubDate>
		<dc:creator>NightAngel</dc:creator>
				<category><![CDATA[Informaticus]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[première image article]]></category>
		<category><![CDATA[Récupérer première image]]></category>
		<category><![CDATA[timthumb tutorial]]></category>
		<category><![CDATA[timthumb tutoriel]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress display first image]]></category>
		<category><![CDATA[WordPress génération de miniatures]]></category>
		<category><![CDATA[WordPress miniature sur index]]></category>
		<category><![CDATA[WordPress miniatures]]></category>
		<category><![CDATA[WordPress timthumb]]></category>
		<category><![CDATA[WP première image billet]]></category>

		<guid isPermaLink="false">http://www.nightangel.fr/?p=3878</guid>
		<description><![CDATA[Par défaut sur WordPress, les X derniers billets (nombre déterminé dans la partie &#8220;Réglages->Lecture&#8221; du panneau d&#8217;administration) sont affichés sur la page d&#8217;accueil. Ceux qui ne suivent pas mon blog par flux RSS ont peut être remarqué que j&#8217;affiche partiellement le dernier article et que seule la première image des articles précédents remonte sous forme [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify">Par défaut sur <a href="http://fr.wordpress.org/" target="_blank"><strong>WordPress</strong></a>, les X derniers billets (nombre déterminé dans la partie <em>&#8220;Réglages->Lecture&#8221;</em> du panneau d&#8217;administration) sont affichés sur la page d&#8217;accueil. Ceux qui ne suivent pas mon blog par <strong><a href="http://www.nightangel.fr/feed/" target="_blank">flux RSS</a></strong> ont peut être remarqué que j&#8217;affiche partiellement le dernier article et que seule la première image des articles précédents remonte sous forme de miniature (mise en cache) sur la page d&#8217;accueil. Suite à plusieurs demandes, je vais donc détailler ici la mise en place d&#8217;un <em>tel</em> système&#8230;</p>
<p><span id="more-3878"></span></p>
<h3>1 &#8211; Script PHP nécessaire à la génération des miniatures&#8230;</h3>
<p style="text-align:justify">Récupérer <a href="http://timthumb.googlecode.com/svn/trunk/timthumb.php" target="_blank">le script php <strong>TimThumb</strong></a> écrit par Tim McDaniels et Darren Hoyt. Mettez le dans un fichier <strong>timthumb.php</strong> que vous chargerez dans le répertoire /wp-content/themes/votre_theme/ de votre installation WordPress.</p>
<p style="text-align:justify">A noter que les 3 variables (&#8216;CACHE_SIZE&#8217;, &#8216;CACHE_CLEAR&#8217; et &#8216;VERSION&#8217;) situées au début du script peuvent être modifiées, le script est bien documenté à ce niveau. Prenons les devants en indiquant dès maintenant que ce script va vous permettre (après édition du fichier <strong>functions.php</strong>) d&#8217;utiliser la fonction de génération des miniatures :</p>
<pre lang="php"><?php catch_that_image(); ?></pre>
<p style="text-align:justify">Lorsque vous allez appeler cette fonction dans votre fichier de thème (dans le cas présent, <strong>index.php</strong>), vous pourrez, au besoin, lui &#8220;passer&#8221; 4 arguments (w, h, zc et q) afin d&#8217;obtenir le type de miniature qui vous convient le mieux.</p>
<blockquote><p>w: largeur de la miniature<br />
h: hauteur de la miniature<br />
zc: zoom crop (0 or 1)<br />
q: qualité de la miniature (compression : 75% par défaut, maxi 100%)</p></blockquote>
<h3>2 &#8211; Déclarer à votre thème la fonction qui va permettre l&#8217;extraction de la première image de l&#8217;article&#8230;</h3>
<p>Editer (ou créer s&#8217;il n&#8217;existe pas) <a href="http://codex.wordpress.org/Theme_Development#Theme_Functions_File" target="_blank">le fichier <strong>functions.php</strong></a> dans le répertoire de votre thème : /wp-content/themes/votre_theme/functions.php pour y ajouter :</p>
<pre lang="php"><?php
function catch_that_image() {
  global $post, $posts;
  $first_img = '';
  ob_start();
  ob_end_clean();
  $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
  $first_img = $matches [1] [0];
  if(empty($first_img)){ //Defines a default image
    $first_img = "/images/default.jpg";
  }
  return $first_img;
}
?></pre>
<p style="text-align:justify">Je n&#8217;ai pas jugé utile de commenter la fonction php ci-dessus. En effet elle va simplement &#8220;lire&#8221; le billet concerné et trouver la première image qui le compose par simple détection de la première balise HTML :</p>
<pre lang="html4strict"><img src=""></pre>
<p style="text-align:justify">Quand la fonction <strong>catch_that_image();</strong> sera appelée (dans le fichier ci-dessous), elle ne fera que remonter le contenu de l&#8217;attribut &#8220;src&#8221; de la balise HTML &#8220;img&#8221; ; autrement dit l&#8217;adresse/url de l&#8217;image.</p>
<p style="text-align:justify">A noter que c&#8217;est le fichier image <strong>default.jpg</strong> qui sera chargé dans le cas où il n&#8217;y aurait pas d&#8217;image dans le billet concerné. Pensez donc bien à mettre un fichier <strong>default.jpg</strong> dans le répertoire <em>images</em> de votre thème. Si l&#8217;emplacement, le nom ou l&#8217;extension du fichier ne vous conviennent pas, vous pouvez toujours modifier la variable <strong>$first_img</strong> de la fonction.</p>
<h3>3 &#8211; Modification de la page d&#8217;accueil (index.php) pour récupérer les premières images et générer les miniatures</h3>
<div align="center"><img src="http://medias.nightangel.fr/2009/08/timthumb.jpg" border="0" alt="timthumb"></div>
<p style="text-align:justify">Voici à quoi ressemble mon fichier de thème <strong>index.php</strong> situé dans le répertoire de thème /wp-content/theme/votre_theme/index.php</p>
<pre lang="php"><?php
get_header(); /* Chargement de l'entête (header.php) */
   $count = 0; /* On met la variable $count à 0 (déclaration) */
   if (have_posts()) : /* Si il y a des articles publiés... */
      while (have_posts()) : the_post(); /* Tant qu'il y a des articles à afficher */
         $count++; /* On incrémente la variable $count (+1) */
            if ($count < 2) : /* Si la variable $count est inférieure à 2 (donc LE billet le plus récent) */
	       the_title(); /* On affiche le titre */
	       the_content(__('Lire la suite')); /* On affiche le corps de l'article */
            else : /* Sinon (si la variable $count est supérieure ou égale à 2)... */
                the_title(); /* On affiche le titre */ ?>
		<img src="<?php bloginfo('stylesheet_directory'); ?>/timthumb.php?src=/<?php echo catch_that_image() ?>&#038;h=172&#038;w=250&#038;zc=1"> <?php /* On affiche la miniature */
	        endif; /* Il n'y a plus de billet à afficher... */
      endwhile; /* Fin de la boucle de comptage */
   else: /* Sinon (aucun article à publier)... */
      _e('Aucun article disponible.'); /* On affiche un message */
   endif;
get_sidebar(); /* Chargement de la barre latérale (sidebar.php) */
get_footer(); /* Chargement du pied de page (footer.php) */
?></pre>
<p style="text-align:justify">A noter que j&#8217;ai volontairement retiré tous les balisages de mise en forme qui sont assez peu pertinents dans le présent tutorial : juste l&#8217;essentiel.</p>
<p style="text-align:justify">J&#8217;affiche volontairement une bonne partie du code afin de vous montrer de quelle manière je compte ($count) les billets afin d&#8217;avoir un rendu différent pour mon article le plus récent et pour les 8 qui suivent. En réalité, pour la stricte génération des miniatures, seule la ligne suivante nous intéresse&#8230;</p>
<pre lang="html4strict"><img src="<?php bloginfo('stylesheet_directory'); ?>/timthumb.php?src=/<?php echo catch_that_image() ?>&#038;h=172&#038;w=250&#038;zc=1"></pre>
<p style="text-align:justify">Dans l&#8217;état actuel des choses, les 8 miniatures générées sur ma page d&#8217;accueil mesurent donc 172 pixels de hauteur (<strong>h=172</strong> ci-dessus) et 250 pixels de largeur (<strong>w=250</strong> ci-dessus). L&#8217;argument <strong>zc=1</strong> permet justement de recadrer l&#8217;image dans le cas où elle ne puisse se redimensionner aux valeurs indiquées sans déformation. L&#8217;attribut <strong>q</strong> n&#8217;est pas utilisé, je conserve sa valeur par défaut, à savoir une compression .jpg à 75%.</p>
<h3>4 &#8211; Mise en cache des miniatures pour un chargement plus rapide (facultatif)</h3>
<div align="center"><img src="http://medias.nightangel.fr/2009/08/chmod.jpg" border="0" alt="coda chmod"></div>
<p style="text-align:justify">Le script <strong>timthumb.php</strong> utilisé plus haut permet de conserver (mettre en cache) les miniatures qu&#8217;il génère dans un répertoire. Ce répertoire doit s&#8217;appeler <strong>cache</strong> et se situer au même niveau que le fichier <strong>timthumb.php</strong>. Vous devez bien sûr mettre les droits nécessaires en écriture sur ce répertoire &#8220;cache&#8221; : <a href="http://www.phpjunkyard.com/ftp-chmod-tutorial.php" target="_blank">CHMOD</a>. Pour déplacer le répertoire <strong>cache</strong>, vous pouvez éditer la ligne 68 (environ) du fichier <strong>timbthumb.php</strong> :</p>
<pre lang="php">$cache_dir = './cache';</pre>
<h3>Informations complémentaires&#8230;</h3>
<p style="text-align:justify">Bien que je déteste utiliser des plugins, les personnes moins &#8220;expérimentées&#8221; pourront obtenir un résultat relativement proche par le biais du plugin <a href="http://wordpress.org/extend/plugins/image-extractor/" target="_blank"><strong>Image Extractor</strong></a> développé par Michele Gobbi. A noter que ce plugin permet uniquement de récupérer la première image d&#8217;un billet et non de générer une miniature, etc&#8230; Bref c&#8217;est l&#8217;alternative <em>à-la-rache</em> par rapport à la solution exposée ci-dessus. Si vous avez des remarques (précisions, correction, etc) ou besoin d&#8217;aide, <strong><a href="http://www.nightangel.fr/wordpress-miniature-afficher-recuperer-premiere-image-page-accueil-index-first-image#respond">le système de commentaires est fait pour vous&#8230;</a></strong> :nickel: </p>
]]></content:encoded>
			<wfw:commentRss>http://www.nightangel.fr/wordpress-miniature-afficher-recuperer-premiere-image-page-accueil-index-first-image/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Protéger votre WordPress du grand méchant loup</title>
		<link>http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/</link>
		<comments>http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 15:46:28 +0000</pubDate>
		<dc:creator>NightAngel</dc:creator>
				<category><![CDATA[Informaticus]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[hack security wordpress]]></category>
		<category><![CDATA[protéger wordpress]]></category>
		<category><![CDATA[protéger wordpress des pirates]]></category>
		<category><![CDATA[protection de wordpress]]></category>
		<category><![CDATA[sécuriser wordpress]]></category>
		<category><![CDATA[sécurité wordpress]]></category>
		<category><![CDATA[secure wordpress]]></category>
		<category><![CDATA[tips wordpress secure]]></category>
		<category><![CDATA[wordpress secure]]></category>

		<guid isPermaLink="false">http://www.nightangel.fr/?p=3788</guid>
		<description><![CDATA[<p><img width="720" height="423" src="http://medias.nightangel.fr/2008/11/wpsecure-00.jpg" class="attachment-post-thumbnail wp-post-image" alt="wpsecure-00" title="wpsecure-00" /></p><p style="text-align:justify">Cela fait maintenant plusieurs années que j'utilise <a href="http://wordpress.org/" target="_blank" title="Site officiel en anglais">WordPress</a> <strike>parce que Dotclear ça pue</strike> et depuis quelques temps, j'ai envie de rédiger un article traitant de la sécurité de cet outil de blogging devenu CMS. Et comme j'avais envie bah... je l'ai fait :lol: Bien que ce <a href="http://fr.wikipedia.org/wiki/Système_de_gestion_de_contenu" target="_blank" title="Définition sur Wikipedia France">CMS</a> voit sa sécurité améliorée de version en version, cette dernière ne se limitant pas au code source, j'ai jugé nécessaire de vous faire part de quelques petites "bidouilles" qui permettront à votre blog de ne pas se faire vulgairement <a href="http://fr.youtube.com/watch?v=M22rir0dJto" target="_blank">poutrer par un zombie</a>. C'est récemment arrivé au <a href="http://www.plopblog.com/blog/2008/11/16/plopblog-hacke-2/" target="_blank">blog de Bastien</a> et demandez-lui, ça fait mal :mad: Je vous souhaite une excellente lecture de cet article d'une vingtaine de pages que j'ai mis un certain temps à rédiger...</p><span id="more-3788"></span>

<h3><img src="http://medias.nightangel.fr/2008/11/proteger-wordpress/preambule.png" border="0" alt="Préambule"></h3>

<p style="text-align:justify"><strong>Version actualisée le Mardi 11 Août 2009 !</strong></p>
<p style="text-align:justify">Toutes les modifications évoquées dans la suite de cet article permettent de sécuriser votre installation de WordPress et ces dernières sont généralement applicables à la plupart des versions. Cependant quelques modifications ne pourront être effectuées sur des versions trop obsolètes de WordPress. Dans ce cas là je vais faire en sorte de préciser dans quel cas il est possible (ou non) d'appliquer telle ou telle modification. A noter que j'ai tout de même personnellement testé l'ensemble de ces modifications sur la version 2.8.4 qui supporte <em>de facto</em> ce qui suit. Si à la suite de cette lecture vous avez des questions, je reste à votre disposition par l'intermédiaire du système de commentaires ou du <a href="http://www.nightangel.fr/contacter-nightangel" target="_blank">formulaire de contact</a>.</p>

<h3><img src="http://medias.nightangel.fr/2008/11/proteger-wordpress/sommaire.png" border="0" alt="Sommaire"></h3>

<blockquote>- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/2">Mettre à jour WordPress</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/3">Utiliser le protocole HTTPS</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/4">Renommer votre compte administrateur</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/5">Bien choisir votre mot de passe</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/6">Vérifier les autorisations des répertoires (CHMOD)</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/7">Changer le préfixe des tables</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/8">Limiter l'accès à des répertoires</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/9">Empêcher le listage des répertoires</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/10">Refuser l'accès à des adresses ip</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/11">Protéger le fichier wp-config.php</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/12">Aller plus loin avec les .htaccess</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/13">Masquer le générateur et la version de WordPress</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/14">Empêcher les robots d'indexer des répertoires</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/15">Effectuer régulièrement des sauvegardes</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/16">Les 4 clés du fichier <em>wp-config.php</em></a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/17">Déplacer et/ou renommer le répertoire <em>wp-content</em></a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/18">Renommer/déplacer/cacher le répertoire <em>wp-admin</em></a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/19">Limiter le nombre de tentatives d'identification</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/20">Interdire l'accès aux logiciels de blogging</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/21">Protéger son identification des "keyloggers" (enregistreurs de frappe)</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/22">Mot de passe à usage unique</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/23">Cacher les erreurs d'identification</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/24">Méfiez-vous de votre boîte mail</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/25">Liens complémentaires et sources d'inspiration</a>.</blockquote>]]></description>
			<content:encoded><![CDATA[<p><img width="720" height="423" src="http://medias.nightangel.fr/2008/11/wpsecure-00.jpg" class="attachment-post-thumbnail wp-post-image" alt="wpsecure-00" title="wpsecure-00" /></p><p style="text-align:justify">Cela fait maintenant plusieurs années que j'utilise <a href="http://wordpress.org/" target="_blank" title="Site officiel en anglais">WordPress</a> <strike>parce que Dotclear ça pue</strike> et depuis quelques temps, j'ai envie de rédiger un article traitant de la sécurité de cet outil de blogging devenu CMS. Et comme j'avais envie bah... je l'ai fait :lol: Bien que ce <a href="http://fr.wikipedia.org/wiki/Système_de_gestion_de_contenu" target="_blank" title="Définition sur Wikipedia France">CMS</a> voit sa sécurité améliorée de version en version, cette dernière ne se limitant pas au code source, j'ai jugé nécessaire de vous faire part de quelques petites "bidouilles" qui permettront à votre blog de ne pas se faire vulgairement <a href="http://fr.youtube.com/watch?v=M22rir0dJto" target="_blank">poutrer par un zombie</a>. C'est récemment arrivé au <a href="http://www.plopblog.com/blog/2008/11/16/plopblog-hacke-2/" target="_blank">blog de Bastien</a> et demandez-lui, ça fait mal :mad: Je vous souhaite une excellente lecture de cet article d'une vingtaine de pages que j'ai mis un certain temps à rédiger...</p><span id="more-3788"></span>

<h3><img src="http://medias.nightangel.fr/2008/11/proteger-wordpress/preambule.png" border="0" alt="Préambule"></h3>

<p style="text-align:justify"><strong>Version actualisée le Mardi 11 Août 2009 !</strong></p>
<p style="text-align:justify">Toutes les modifications évoquées dans la suite de cet article permettent de sécuriser votre installation de WordPress et ces dernières sont généralement applicables à la plupart des versions. Cependant quelques modifications ne pourront être effectuées sur des versions trop obsolètes de WordPress. Dans ce cas là je vais faire en sorte de préciser dans quel cas il est possible (ou non) d'appliquer telle ou telle modification. A noter que j'ai tout de même personnellement testé l'ensemble de ces modifications sur la version 2.8.4 qui supporte <em>de facto</em> ce qui suit. Si à la suite de cette lecture vous avez des questions, je reste à votre disposition par l'intermédiaire du système de commentaires ou du <a href="http://www.nightangel.fr/contacter-nightangel" target="_blank">formulaire de contact</a>.</p>

<h3><img src="http://medias.nightangel.fr/2008/11/proteger-wordpress/sommaire.png" border="0" alt="Sommaire"></h3>

<blockquote>- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/2">Mettre à jour WordPress</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/3">Utiliser le protocole HTTPS</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/4">Renommer votre compte administrateur</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/5">Bien choisir votre mot de passe</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/6">Vérifier les autorisations des répertoires (CHMOD)</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/7">Changer le préfixe des tables</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/8">Limiter l'accès à des répertoires</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/9">Empêcher le listage des répertoires</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/10">Refuser l'accès à des adresses ip</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/11">Protéger le fichier wp-config.php</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/12">Aller plus loin avec les .htaccess</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/13">Masquer le générateur et la version de WordPress</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/14">Empêcher les robots d'indexer des répertoires</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/15">Effectuer régulièrement des sauvegardes</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/16">Les 4 clés du fichier <em>wp-config.php</em></a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/17">Déplacer et/ou renommer le répertoire <em>wp-content</em></a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/18">Renommer/déplacer/cacher le répertoire <em>wp-admin</em></a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/19">Limiter le nombre de tentatives d'identification</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/20">Interdire l'accès aux logiciels de blogging</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/21">Protéger son identification des "keyloggers" (enregistreurs de frappe)</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/22">Mot de passe à usage unique</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/23">Cacher les erreurs d'identification</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/24">Méfiez-vous de votre boîte mail</a>,
- <a href="http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/25">Liens complémentaires et sources d'inspiration</a>.</blockquote>]]></content:encoded>
			<wfw:commentRss>http://www.nightangel.fr/securiser-wordpress-securite-protection-pirates-proteger-wordpress-secure-tips-hacks-plugins/feed/</wfw:commentRss>
		<slash:comments>84</slash:comments>
		</item>
		<item>
		<title>WordPress 2.3.1 : Disparition éditeur visuel TinyMCE</title>
		<link>http://www.nightangel.fr/wordpress-231-disparition-editeur-visuel-tinymce/</link>
		<comments>http://www.nightangel.fr/wordpress-231-disparition-editeur-visuel-tinymce/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 13:41:31 +0000</pubDate>
		<dc:creator>NightAngel</dc:creator>
				<category><![CDATA[Informaticus]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[éditeur visuel]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[sebabakart]]></category>
		<category><![CDATA[tinyMCE]]></category>
		<category><![CDATA[wordpress 2.3.1]]></category>

		<guid isPermaLink="false">http://www.nightangel.fr/wordpress-231-disparition-editeur-visuel-tinymce/</guid>
		<description><![CDATA[Il y a quelques jours j&#8217;ai installé un WordPress version 2.3.1 et j&#8217;ai constaté la disparition de l&#8217;éditeur visuel de billets TinyMCE. Bon moi perso j&#8217;édite mes articles en mode &#8220;Code&#8221; alors ça ne me pose pas trop de problèmes mais bon. Un truc qui marche pas comme ça, ça m&#8217;énerve sévère. Surtout qu&#8217;il y [...]]]></description>
			<content:encoded><![CDATA[<div align="center"><img src="http://medias.nightangel.fr/2008/03/wordpress-tinymce.png" border="0" alt="Disparition de l'éditeur visuel TinyMCE dans WordPress"></div>
<p>Il y a quelques jours j&#8217;ai installé un <a href="http://wordpress.org/" target="_blank">WordPress</a> version 2.3.1 et j&#8217;ai constaté la disparition de l&#8217;éditeur visuel de billets <a href="http://tinymce.moxiecode.com/" target="_blank">TinyMCE</a>. Bon moi perso j&#8217;édite mes articles en mode &#8220;Code&#8221; alors ça ne me pose pas trop de problèmes mais bon. Un truc qui marche pas comme ça, ça m&#8217;énerve sévère. Surtout qu&#8217;il y a plusieurs <a href="http://wordpress.org/" target="_blank">WordPress</a> qui sont installés sur la machine et je ne rencontre le problème que sur celui là. Ce n&#8217;est apparemment pas directement lié à la version puisque d&#8217;autres <a href="http://wordpress.org/" target="_blank">WordPress</a> 2.3.1 fonctionnent. Après plusieurs recherches il s&#8217;avère que le problème vient apparemment de la compression gzip qui doit être mal gérée par le système. J&#8217;ai donc trouvé la solution <u>sans vraiment pouvoir expliquer l&#8217;origine exacte du problème</u> (j&#8217;suis un teigneux LOL). Donc si votre <a href="http://tinymce.moxiecode.com/" target="_blank">TinyMCE</a> disparait bah&#8230; (Vidéo de sebabakart <a href="http://www.nightangel.fr/wordpress-231-disparition-editeur-visuel-tinymce/#more-2381">en fin d&#8217;article</a>, y&#8217;a du lourd !) <span id="more-2381"></span></p>
<p>Il faut éditer le fichier suivant qui se trouve sur votre FTP : /wp-includes/js/tinymce/tiny_mce_gzip.php</p>
<p>Après il faut vous rendre aux alentours de la ligne numéro 83 afin de trouver ce bout de code :</p>
<blockquote><pre>// Check if it supports gzip
if (isset($_SERVER['HTTP_ACCEPT_ENCODING']))
$encodings = explode(',', strtolower(preg_replace("/s+/", "", $_SERVER['HTTP_ACCEPT_ENCODING'])));

if ((in_array('gzip', $encodings) || in_array('x-gzip', $encodings) ||
isset($_SERVER['---------------'])) &#038;&#038; function_exists('ob_gzhandler')
&#038;&#038; !ini_get('zlib.output_compression') &#038;&#038; ini_get('output_handler') != 'ob_gzhandler') {
$enc = in_array('x-gzip', $encodings) ? "x-gzip" : "gzip";
$supportsGzip = true;
}</pre>
</blockquote>
<p>Il faut remplacer (vers la ligne 89) :</p>
<p><code>$supportsGzip = true;</code></p>
<p>par :</p>
<p><code>$supportsGzip = false;</code></p>
<p>On enregistre le fichier et on le charge sur le FTP à la place du tiny_mce_gzip.php original :razz:</p>
<p>Voilà comment on arrive à passer du temps sur une petite connerie de m&#8230;. :evil:<br />
<hr />Et suite aux multiples demandes (y&#8217;a des gens courageux), voici le délire de sebabakart (il était en même temps en conférence sur skype avec alban et moi-même)&#8230;</p>
<div align="center"><object width="520" height="411"><param name="movie" value="http://www.dailymotion.com/swf/x4jx1w&#038;v3=1&#038;related=0"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.dailymotion.com/swf/x4jx1w&#038;v3=1&#038;related=0" type="application/x-shockwave-flash" width="520" height="411" allowFullScreen="true" allowScriptAccess="always"></embed></object></div>
<p>PS : Il avait ingurgité une quantité assez impressionnante d&#8217;alcool le bougre :???:</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nightangel.fr/wordpress-231-disparition-editeur-visuel-tinymce/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
	</channel>
</rss>

