<?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>css 4 design &#187; Template</title>
	<atom:link href="http://css4design.com/tag/template/feed" rel="self" type="application/rss+xml" />
	<link>http://css4design.com</link>
	<description>Le blog de l&#039;intégrateur web</description>
	<lastBuildDate>Sun, 05 Feb 2012 18:10:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<atom:link rel='hub' href='http://css4design.com/?pushpress=hub'/>
		<item>
		<title>Création de site WordPress de A à Z &#8212; B comme Basics</title>
		<link>http://css4design.com/creation-de-site-wordpress-de-a-a-z-b-comme-basics</link>
		<comments>http://css4design.com/creation-de-site-wordpress-de-a-a-z-b-comme-basics#comments</comments>
		<pubDate>Fri, 06 May 2011 14:28:21 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress A à Z]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Edito]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[HTML5 Boilerplate]]></category>
		<category><![CDATA[html5shiv]]></category>
		<category><![CDATA[Template]]></category>

		<guid isPermaLink="false">http://css4design.com/?p=9998</guid>
		<description><![CDATA[Je comptais terminer la série WordPress de A à Z avec la livraison d&#8217;un thème de base, mais il m&#8217;a semblé que livrer un thème minimaliste dès le début serait une meilleure idée. J&#8217;ai donc plongé plus profondément dans le Codex pour voir si l&#8217;eau était bonne. J&#8217;en ai profité pour organiser concrètement les éléments abordés dans WordPress de A à Z — A comme Allons-y ! : installer la dernière version de WordPress en français et HTML5 Boilerplate, puis ajouter les fonctionnalités du moteur de WordPress à l&#8217;aide du Codex. A l&#8217;issue de cet article, vous aurez donc un Blank Theme [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fcreation-de-site-wordpress-de-a-a-z-b-comme-basics">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fcreation-de-site-wordpress-de-a-a-z-b-comme-basics&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>Je comptais terminer la série <a href="http://css4design.com/creer-son-site-web-avec-wordpress-de-a-a-z-avec-le-codex">WordPress de A à Z</a> avec la livraison d&#8217;un thème de base, mais il m&#8217;a semblé que livrer un thème minimaliste dès le début serait une meilleure idée. J&#8217;ai donc plongé plus profondément dans le Codex pour voir si l&#8217;eau était bonne. J&#8217;en ai profité pour organiser concrètement les éléments abordés dans <a rel="bookmark" href="http://css4design.com/wordpress-a-z-allons-y">WordPress de A à Z — A comme Allons-y !</a> : installer la dernière version de WordPress en français et HTML5 Boilerplate, puis ajouter les fonctionnalités du moteur de WordPress à l&#8217;aide du Codex. A l&#8217;issue de cet article, vous aurez donc un <em>Blank Theme</em> qui servira de support pour la suite des articles de cette série et de base pour de nouveaux thèmes WordPress. Dans cet article, j&#8217;ai choisi de détailler (parfois brièvement) l&#8217;ensemble des éléments composant <em>Basics</em>. D&#8217;autres articles viendront bientôt pour justifier certains choix ou expliciter certaines notions ; il reste encore pas mal de lettres dans l&#8217;alphabet après la lettre «B» ;-)<span id="more-9998"></span></p>

<p><a href="http://css4design.com/wp-content/uploads/2011/04/creation-theme-wordpress-a-z.png"><img class="aligncenter size-full wp-image-9765" title="creation-theme-wordpress-a-z" src="http://css4design.com/wp-content/uploads/2011/04/creation-theme-wordpress-a-z.png" alt="" width="633" height="407" /></a></p>

<p>Articles déjà publiés dans la série <em>WordPress de A à Z</em> :</p>

<p><a rel="bookmark" href="http://css4design.com/logo-wordpress-je-theme-creative-commons">
</a></p>

<ol>
    <li><a rel="bookmark" href="http://css4design.com/logo-wordpress-je-theme-creative-commons">Logo « WordPress je thème »</a></li>
    <li><a rel="bookmark" href="http://css4design.com/creer-son-site-web-avec-wordpress-de-a-a-z-avec-le-codex">WordPress de A à Z… avec le Codex</a></li>
    <li><a rel="bookmark" href="http://css4design.com/wordpress-a-z-allons-y">A comme Allons-y !</a></li>
    <li>Vous lisez : <strong>B comme Basics</strong></li>
    <li>Prochain article : C comme Commentaires</li>
</ol>

<p>→ <strong><a title="Présentation du thème Basics en anglais et lien de téléchargement" href="http://wp4design.com">WordPress Basics</a></strong>.</p>

<p><small>Note : Ce lien pointera toujours vers la dernière version du thème Basics qui sera en évolution quasi permanente pour refléter les progrès de la science, mais aussi et surtout pour la correction des bugs qui ne manquent jamais de survenir aux endroits où on les attend le moins. Par conséquent, il y aura des différences entre les exemples de code présentés ici et le thème Basics. <strong>Nhésitez pas à me faire parvenir vos suggestions pour améliorer Basics dans les commentaires ou à l&#8217;adresse bruno.bichet@gmail.com</strong></small></p>

<h2>Basics, un thème WordPress basique</h2>

<p><em>Basics</em> est composé d&#8217;un fichier <code>index.php</code> et d&#8217;une feuille de style CSS. Pour des raisons de modularité qui deviendront évidentes à mesure que la série <em>WordPress de A à Z</em> s’étoffera &#8211; un thème un peu complexe nécessite souvent plusieurs fichiers &#8211;, <code>index.php</code> est scindé en plusieurs fichiers : <code>header.php</code>, <code>sidebar.php</code>, <code>footer.php</code> eux-même éventuellement constitués de plusieurs parties.</p>

<p>Ce système de construction gigogne permettra de créer facilement un nouveau thème. Il suffira de dupliquer et de renommer <code>index.php</code> en <code>single.php</code>, <code>category.php</code> ou <code>tag.php</code>, etc., pour modifier l&#8217;affichage des différents contextes d&#8217;affichage.</p>

<p>Comme on a souvent besoin d&#8217;afficher des boucles personnalisées sur la page d&#8217;accueil, j&#8217;ai également inclus un fichier <em>home.php</em> qui sera utilisé par WordPress pour afficher la page d&#8217;accueil. Ce fichier contient un exemple de boucle que vous pourrez adapter. Si vous n&#8217;en n&#8217;avez pas besoin, faites glisser <em>home.php</em> dans le dossier <em>/utils</em> et n&#8217;en parlons plus.</p>

<p><em>Basics</em> contient également une page <em>404.php</em> pour permettre aux visiteurs de trouver ce qu&#8217;ils sont venu chercher, lorsque vos pages sont «aux fraises».</p>

<h2>Basics à la maison</h2>

<p>La meilleure façon d&#8217;apprendre, c&#8217;est de faire soi-même. C&#8217;est pourquoi, je vous invite à télécharger et à installer les éléments suivants :</p>

<ol>
    <li>Version française de la <a href="http://fr.wordpress.org/">dernière version de WordPress</a>,</li>
    <li><a href="http://html5boilerplate.com/">HTML5 Boilerplate</a>,</li>
    <li>Le serveur Apache, PHP &amp; MySQL <a href="http://www.wampserver.com/">WampServer</a>.</li>
</ol>

<p>Le serveur web s&#8217;installe comme n&#8217;importe quel logiciel. L&#8217;important est de repérer son emplacement et de naviguer dans l&#8217;arborescence pour trouver le dossier <code>/www</code>  dans lequel vous y installerez le dossier <code>wordpress</code> une fois «dézippé». Il suffira ensuite de copier le contenu de <em>HTML5 Boilerplate</em> dans le dossier <code>themes</code>  de <code>wordpress</code>. Et voilà !</p>

<p>Pssst, n&#8217;oubliez pas d&#8217;emporter le <a href="http://codex.wordpress.org">Codex</a> avec vous ;-)</p>

<h3>HTML5 Boilerplate</h3>

<p>J&#8217;ai opté pour la version sans commentaire, mais rien ne vous empêche d&#8217;utiliser la version complète ou personnalisée.</p>

<p>Pour commencer, je vais alimenter les fichiers <em>header.php</em> et <em>footer.php</em> avec <abbr title="HTML5 Boilerplate">H5BP</abbr>. Je m&#8217;occuperai ensuite du fichier <em>index.php</em> proprement dit. Pour connaitre les explications concernant le contenu de <abbr title="HTML5 Boilerplate">H5BP</abbr>, je vous conseille la lecture de la <a href="http://html5boilerplate.com/docs/#Home">documentation officielle</a>.</p>

<h3>functions.php</h3>

<p>Pour éviter certaines redondances que l&#8217;on retrouve souvent dans les thèmes, j&#8217;ai regroupé certaines portions de code dans le fichier <em>functions.php</em>. Certains préfèrent inclure ces bouts de code dans des fichiers à la racine du thème ou dans un dossier <em>/inc/</em>.</p>

<p>C&#8217;est un choix tout aussi judicieux, mais je voulais éviter : 1) d&#8217;augmenter le nombre de fichiers déjà conséquent pour un thème «basique», et 2) permettre de redéfinir ces fonctions dans le fichier <code>functions.php</code> d&#8217;un <a href="http://codex.wordpress.org/fr:Th%C3%A8mes_Enfant">thème enfant</a> (<a href="http://codex.wordpress.org/Child_Themes">Child Theme</a>) grâce à la vérification suivante :
<pre>&lt;?php if ( ! function_exists( 'basics_title' ) ) :
    function basics_title() {...}
endif; ?&gt;</pre>
Si la fonction <code>basics_title()</code> n&#8217;a pas été redéfinie dans le fichier <em>functions.php</em> de votre thème enfant, c&#8217;est la fonction <code>basics_title()</code> du thème <em>Basics</em> qui sera prise en compte.</p>

<p>La mise en place d&#8217;un thème enfant n&#8217;est pas obligatoire pour créer votre thème avec <em>Basics.</em> Il est tout à fait possible de modifier directement  <em>functions.php</em> de <em>Basics</em> et dupliquer les fichiers <em>index.php</em> ou <em>home.php</em> pour adapter les <em>Templates</em> à votre projet de site web.</p>

<h3>phpDocumentor</h3>

<p>Au début de chaque fichier, je précise quelques informations avec la syntaxe <a href="phpDocumentor">PHPDoc</a> qui permet de générer une documentation d&#8217;après des commentaires formatés.
<pre>&lt;?php
/**
* @package WordPress
* @subpackage Basics
* @author Bruno Bichet &lt;bruno.bichet@gmail.com&gt;
* @version 0.1
* @since Version 0.1
* @todo Check the markup http://validator.w3.org/
*/
?&gt;</pre>
→ Ressources :</p>

<ul>
    <li><a href="http://manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_tags.package.pkg.html">http://manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_tags.package.pkg.html</a></li>
    <li><a href="http://manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_tags.subpackage.pkg.html">http://manual.phpdoc.org/HTMLSmartyConverter/HandS/phpDocumentor/tutorial_tags.subpackage.pkg.html</a></li>
</ul>

<h3>Internationalisation</h3>

<p><em>Basics</em> est prêt à chanter l&#8217;Internationale dans la langue de votre choix ! Toutes les chaines de caractères sont situées dans les fonctions prévues à cet effet :</p>

<ul>
    <li><code>__( 'Ma chaine', 'basics' )</code> &#8212; Retourne le résultat &laquo;&nbsp;Ma chaine&nbsp;&raquo; dans une fonction</li>
    <li><code>_e( 'Ma chaine', 'basics' )</code> &#8212; Affiche &laquo;&nbsp;Ma chaine&nbsp;&raquo; (équivalent à <code>echo __( 'Ma chaine', 'basics' )</code></li>
    <li>etc.</li>
</ul>

<p>J&#8217;ai choisi de conserver l&#8217;anglais comme langue de départ afin d&#8217;ajouter facilement des portions de code en provenance du Codex dont les exemples sont dans cette langue.</p>

<p>→ Ressources :</p>

<ul>
    <li>Codex &#8211; <a href="http://codex.wordpress.org/I18n_for_WordPress_Developers">http://codex.wordpress.org/I18n_for_WordPress_Developers</a></li>
</ul>

<h3>header.php</h3>

<h4>Doctype HTML5 et balise &lt;html&gt;</h4>

<p><pre>&lt;!doctype html&gt;
&lt;!--[if lt IE 7 ]&gt; &lt;html class="no-js ie ie6" &lt;?php language_attributes(); ?&gt;&gt; &lt;![endif]--&gt;
&lt;!--[if IE 7 ]&gt;    &lt;html class="no-js ie ie7" &lt;?php language_attributes(); ?&gt;&gt; &lt;![endif]--&gt;
&lt;!--[if IE 8 ]&gt;    &lt;html class="no-js ie ie8" &lt;?php language_attributes(); ?&gt;&gt; &lt;![endif]--&gt;
&lt;!--[if IE 9 ]&gt;    &lt;html class="no-js ie ie9" &lt;?php language_attributes(); ?&gt;&gt; &lt;![endif]--&gt;
&lt;!--[if (gt IE 9)|!(IE)]&gt;&lt;!--&gt; &lt;html class="no-js" &lt;?php language_attributes(); ?&gt;&gt; &lt;!--&lt;![endif]--&gt;</pre>
Le <em>Doctype</em> précise le type du document. Il permet principalement au navigateur de savoir ce qu&#8217;il doit afficher. En effet, il n&#8217;existe pas qu&#8217;une seule version de HTML. On trouve : HTML 4.01 Strict, HTML 4.01 Transitional, XHTML 1.0 Strict.</p>

<p>Le <em>Doctype</em> permet de proposer les pages au <a href="http://validator.w3.org/">validateur</a>, tout en permettant de faire basculer Internet Explorer dans le model de boite standard, ce qui est bien pratique.</p>

<p>→ Ressources :</p>

<ul>
    <li><a href="http://openweb.eu.org/articles/toi_comprendre_moi">http://openweb.eu.org/articles/toi_comprendre_moi</a></li>
</ul>

<h5>Classes pour cibler IE9</h5>

<p>j&#8217;ai effectué quelques changements par rapport à <abbr title="HTML5 Boilerplate">H5BP</abbr> :</p>

<ul>
    <li>Ajout des classes `.ie` pour cibler d&#8217;un seul coup toutes les versions d&#8217;Internet Explorer «au cas où»,</li>
    <li>Ajout de la classe `.ie9` : je ne partage pas l&#8217;optimisme de Paul Irish quand à la capacité d&#8217;IE9 de se comporter comme Firefox, Google Chrome ou Opera&#8230; J&#8217;espère toutefois que Microsoft rendra une copie correcte avec IE 10 ;)</li>
</ul>

<h5>Attributs de langue</h5>

<p>J&#8217;ai remplacé la propriété <code>en</code> et l&#8217;attribut <code>lang</code> par la fonction <code>&lt;?php language_attributes(); ?&gt;</code> pour obtenir les informations concernant la langue et le sens de lecture du site.</p>

<p>→ Ressources :</p>

<ul>
    <li>Admin &#8212; Le paramètre de langue est spécifié dans le fichier <em>wp-config.php</em> à la ligne `define(&#8216;WPLANG&#8217;, &#8216;fr_FR&#8217;);`</li>
    <li>Codex &#8212; <a href="http://codex.wordpress.org/Function_Reference/language_attributes">Language attributes</a></li>
    <li>W3C &#8211; <a href="http://www.w3.org/TR/html5/semantics.html#the-html-element-0">http://www.w3.org/TR/html5/semantics.html#the-html-element-0</a></li>
</ul>

<h3>&lt;head&gt;</h3>

<p>Cette balise regroupe un ensemble de meta-données sur votre document.
<pre>&lt;head&gt;</pre>
Ouverture de la balise head.</p>

<p>→ Ressources :</p>

<ul>
    <li><a href="http://www.w3.org/TR/html5/semantics.html#the-head-element-0">http://www.w3.org/TR/html5/semantics.html#the-head-element-0</a></li>
</ul>

<h4>Jeu de caractère (Charset)</h4>

<p><pre>&lt;meta charset="&lt;?php bloginfo( 'charset' ); ?&gt;"&gt;</pre>
Encodage des caractères utilisés dans le document.</p>

<p>→ Ressources :</p>

<ul>
    <li>Admin &#8211; <em>Réglages -&gt; Lecture (Options de lecture)</em> ou directement à l&#8217;adresse <em>[votre_site]/wp-admin/options-reading.php</em>.</li>
    <li>Codex &#8211; <a href="http://codex.wordpress.org/Function_Reference/bloginfo">http://codex.wordpress.org/Function_Reference/bloginfo</a></li>
    <li>W3C &#8211; <a href="http://www.w3.org/TR/html5/Overview.html#attr-meta-charset"></a><a href="http://www.w3.org/TR/html5/semantics.html#attr-meta-charset">http://www.w3.org/TR/html5/semantics.html#attr-meta-charset</a></li>
</ul>

<h4>X-UA-Compatible</h4>

<p><pre>&lt;!--[if IE]&gt;&lt;meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"&gt;&lt;![endif]--&gt;</pre>
Force l&#8217;utilisation du moteur de rendu le plus récent disponible dans les navigateurs Internet Explorer à partir de la version 8.</p>

<p>→ Ressources :</p>

<ul>
    <li><a href="http://msdn.microsoft.com/fr-fr/ie/cc405106">http://msdn.microsoft.com/fr-fr/ie/cc405106</a></li>
</ul>

<h4>&lt;title&gt;</h4>

<p><pre>&lt;title&gt;&lt;?php echo basics_title(); ?&gt;&lt;/title&gt;</pre>
Ce titre identifie le document. Afficher le nom du site seul n&#8217;est utile que sur la page d&#8217;accueil. Pour les pages d&#8217;articles il est préférable d&#8217;inclure également le titre du billet. C&#8217;est le but de la fonction <code>basics_title()</code> située dans le fichier <em>functions.php</em>.</p>

<p>→ Ressources :</p>

<ul>
    <li>Admin &#8211; <em>Réglages -&gt; Général (Options générales)</em> ou directement à l&#8217;adresse <em>[votre_site]/wp-admin/options-general.php</em>.</li>
    <li>W3C &#8211; <a href="http://www.w3.org/TR/html5/semantics.html#the-title-element-0">http://www.w3.org/TR/html5/semantics.html#the-title-element-0</a></li>
</ul>

<h4>&lt;meta description&gt;</h4>

<p><pre>&lt;meta name="description" content="&lt;?php echo basics_description(); ?&gt;"&gt;</pre>
Slogan ou description du blog. Comme pour le <em>title</em> vu au-dessus, il est préférable de moduler cette description selon le contexte dans une optique SEO (amélioration pour les moteurs de recherche). C&#8217;est le but de cette fonction située dans <em>functions.php</em>.</p>

<p>→ Ressources :</p>

<ul>
    <li>Admin &#8211; <em>Réglages -&gt; Général (Options générales)</em> ou directement à l&#8217;adresse <em>[votre_site]/wp-admin/options-general.php</em>.</li>
</ul>

<h4>&lt;meta author&gt;</h4>

<p><pre>&lt;meta name="author" content="&lt;?php the_author_meta( 'display_name', 1 ); ?&gt;"&gt;</pre>
Affichage du prénom et du nom de l&#8217;administrateur du site. N&#8217;oubliez pas de renseigner ces élément dans les réglages de WordPress, sinon c&#8217;est votre pseudo qui s&#8217;affiche à la place.</p>

<p>→ Ressources :</p>

<ul>
    <li>Admin &#8211; <em>Utilisateurs -&gt; Votre profil (Options personnelles)</em> ou directement à l&#8217;adresse <em>[votre_site]/wp-admin/profile.php</em>.</li>
    <li>Codex &#8211; <a href="http://codex.wordpress.org/Function_Reference/the_author_meta">http://codex.wordpress.org/Function_Reference/the_author_meta</a></li>
    <li><a href="http://wp4design.com/using-the_author_meta">Using the_author_meta() to fill the meta name=”author” tag</a></li>
</ul>

<h4>&lt;meta viewport&gt;</h4>

<p><pre>&lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;</pre>
Gestion de l&#8217;affichage par défaut sur les périphériques mobiles.</p>

<h4>Favicons</h4>

<p><pre>&lt;link rel="shortcut icon" href="&lt;?php bloginfo( 'template_directory' ); ?&gt;/favicon.ico"&gt;</pre>
Emplacement du favicon pour votre site.
<pre>&lt;link rel="apple-touch-icon" href="&lt;?php bloginfo( 'template_directory' ); ?&gt;/apple-touch-icon.png"&gt;</pre>
Emplacement du favicon affiché sur les iPhones et certains terminaux Android.</p>

<h4>Feuille de style principale</h4>

<p><pre>&lt;link rel="stylesheet" href="&lt;?php bloginfo( 'stylesheet_url' ); ?&gt;?v=2"&gt;</pre>
Feuille de style principale de votre site. Le paramètre <code>stylesheet_url</code> nous amène directement à la feuille de style du thème. Dans <em>Basics</em>, cette CSS ne contient que les éléments permettant d&#8217;identifier le thème ainsi que les règles <code>imports</code> pour importer les feuilles de style situées dans le dossier <em>/css.</em></p>

<p>→ Ressources :<em>
</em></p>

<ul>
    <li>Codex &#8211; <a href="http://codex.wordpress.org/Function_Reference/bloginfo">http://codex.wordpress.org/Function_Reference/bloginfo</a></li>
    <li><a href="http://css.mammouthland.net/">CSS débutant</a></li>
</ul>

<h4>Librairie Javascript Modernizr</h4>

<p><pre>&lt;script src="&lt;?php bloginfo( 'template_directory' ); ?&gt;/js/libs/modernizr-1.7.min.js"&gt;&lt;/script&gt;</pre>
Modernizr est une bibliothèque Javascript qui permet, d&#8217;une part d&#8217;activer les nouvelles balises HTML5 dans Internet Explorer, et d&#8217;autre part de de cibler précisément les fonctionnalités CSS3 et HTML5 dans les feuilles de styles. Le paramètre <code>template_directory</code> nous amène directement  dans le répertoire du thème.</p>

<p>WordPress propose plusieurs façons de pointer vers le dossier du thème pour permettre une meilleure gestion des thèmes enfants, notamment. J&#8217;aborderai cette question dans un autre article.</p>

<p>→ Ressources :</p>

<ul>
    <li><a href="http://www.modernizr.com/">http://www.modernizr.com/</a></li>
</ul>

<h4>Microformat XFN</h4>

<p><pre>&lt;link rel="profile" href="http://gmpg.org/xfn/11"&gt;</pre>
Ce microformat est utilisé par WordPress lorsqu&#8217;on utilise le type de contenu <em>Liens</em>. Il permet de représenter les relations humaines en utilisant les hyperliens. Par exemple, je pourrais indiquer que j&#8217;aime WordPress.org par la relation <code>&amp;lt;a href="http://wordpress.org" rel="muse"&amp;gt;</code></p>

<p>→ Ressources :</p>

<ul>
    <li><abbr title="Global Multimedia Protocols Group">GMPG</abbr> &#8211; <a href="http://gmpg.org/xfn/">http://gmpg.org/xfn/</a></li>
    <li><a href="http://microformats.org/wiki/xfn-fr">http://microformats.org/wiki/xfn-fr</a></li>
</ul>

<h4>Commentaires imbriqués</h4>

<p><pre>&lt;?php if ( is_singular() &amp;&amp; get_option( 'thread_comments' ) ) wp_enqueue_script( 'comment-reply' ); ?&gt;</pre>
Activation des commentaires imbriqués dans WordPress.</p>

<p>→ Ressources :</p>

<ul>
    <li>Admin &#8211; <em>Réglages -&gt; Discussion (Options de discussion)</em> ou directement à l&#8217;adresse <em>[votre_site]/wp-admin/options-discussion.php</em>.</li>
    <li>Codex &#8211; <a href="http://codex.wordpress.org/Function_Reference/get_option">http://codex.wordpress.org/Function_Reference/get_option</a> et <a href="http://codex.wordpress.org/Option_Reference">http://codex.wordpress.org/Option_Reference</a></li>
</ul>

<h4>Pingback et trackback</h4>

<p><pre>&lt;link rel="pingback" href="&lt;?php bloginfo( 'pingback_url' ); ?&gt;" /&gt;</pre>
URL pour permettre les pingbacks.</p>

<p>→ Ressources :</p>

<ul>
    <li>Admin &#8211; <em>Réglages -&gt; Discussion (Options de discussion)</em> ou directement à l&#8217;adresse <em>[votre_site]/wp-admin/options-discussion.php</em>.</li>
    <li>Codex &#8211; <a href="http://codex.wordpress.org/Function_Reference/get_bloginfo">http://codex.wordpress.org/Function_Reference/get_bloginfo</a></li>
</ul>

<h4>Crochet wp_head</h4>

<p><pre>&lt;?php wp_head(); ?&gt;</pre>
Crochet (<em>Hook</em>) pour permettre aux plugins WordPress d&#8217;ajouter des éléments dans la balise <em>head</em>.</p>

<p>→ Ressources du Codex :</p>

<ul>
    <li><a href="http://codex.wordpress.org/Plugin_API/Action_Reference/wp_head">http://codex.wordpress.org/Plugin_API/Action_Reference/wp_head</a></li>
    <li><a href="http://codex.wordpress.org/Plugin_API">http://codex.wordpress.org/Plugin_API</a></li>
</ul>

<h4>Fermeture de la balise head</h4>

<p><pre>&lt;/head&gt;</pre>
Fermeture de la balise head</p>

<p>→ Ressources :</p>

<ul>
    <li>W3C &#8211; <a href="http://www.w3.org/TR/html5/semantics.html#the-head-element-0">http://www.w3.org/TR/html5/semantics.html#the-head-element-0</a></li>
</ul>

<h3>Ouverture de la balise body</h3>

<p><pre>&lt;body &lt;?php body_class(); ?&gt;&gt;</pre>
C&#8217;est le corps de la page qui contient l&#8217;ensemble du document. On met généralement à la suite une autre balise servant de container.
<pre>&lt;div id="page" class="hfeed" role="document"&gt;</pre>
Toutefois, la balise <code>body</code> peut très bien servir de «container» global pour votre document. Dans ce cas, vous pouvez utiliser&#8230;
<pre>&lt;body id="page" &lt;?php body_class('hfeed'); ?&gt; role="document"&gt;</pre>
&#8230;et supprimer la balise <code>div#page</code>. N&#8217;oubliez pas de supprimer également la balise de fermeture correspondante <code>&amp;lt;/div&amp;gt; &amp;lt;!-- eo #page --&amp;gt;</code> dans le fichier <em>footer.php</em> !</p>

<p>Notez la possibilité d&#8217;ajouter une classe à la fonction <code>body_class()</code> dont le rôle est d&#8217;ajouter une foultitude de classes à la balise <code>body</code> en fonction du contexte. Cette fonctionnalité qui a fait son apparition avec WordPress 2.8 était déjà présente dans le <a href="http://css4design.com/sandbox-un-theme-wordpress-pour-integrateurs-html-chic-qui-aiment-les-microformats">thème Sandbox</a>.</p>

<p>→ Ressources :</p>

<ul>
    <li>W3C &#8211; <a href="http://www.w3.org/TR/html5/sections.html#the-body-element-0">http://www.w3.org/TR/html5/sections.html#the-body-element-0</a></li>
</ul>

<h4>Balise HTML5 &lt;header&gt;</h4>

<p><pre>&lt;header id="banner" role="banner"&gt;
    &lt;hgroup id="branding"&gt;
        &lt;h1&gt;&lt;a href="&lt;?php echo home_url( '/' ); ?&gt;" rel="home"&gt;&lt;?php bloginfo( 'name' ); ?&gt;&lt;/a&gt;&lt;/h1&gt;
        &lt;h2&gt;&lt;?php bloginfo( 'description' ); ?&gt;&lt;/h2&gt;
    &lt;/hgroup&gt; &lt;!-- eo #branding --&gt;
    &lt;nav id="site-navigation" role="navigation"&gt;
        &lt;h1 class="visuallyhidden"&gt;&lt;?php _e( 'Site navigation', 'basics' ); ?&gt;&lt;/h1&gt;
        &lt;div class="visuallyhidden focusable"&gt;
            &lt;a href="#content" title="&lt;?php esc_attr_e( 'Skip to content', 'basics' ); ?&gt;"&gt;&lt;?php _e( 'Skip to content', 'basics' ); ?&gt;&lt;/a&gt;
        &lt;/div&gt;
        &lt;?php wp_nav_menu( array( 'theme_location' =&gt; 'first' ) ); ?&gt;
    &lt;/nav&gt; &lt;!-- eo #site-navigation --&gt;
&lt;/header&gt; &lt;!-- eo #banner --&gt;</pre>
→ Ressources W3C :</p>

<ul>
    <li><a href="http://www.w3.org/TR/html5/sections.html#the-header-element">http://www.w3.org/TR/html5/sections.html#the-header-element</a></li>
    <li><a href="http://www.w3.org/TR/html5/sections.html#the-header-element"></a><a href="http://www.w3.org/TR/html5/sections.html#the-hgroup-element">http://www.w3.org/TR/html5/sections.html#the-hgroup-element</a></li>
</ul>

<h5>Balise &lt;nav&gt;</h5>

<p>Sans surprise, cette balise <code>nav</code> regroupe les éléments pour naviguer dans le site : lien d&#8217;échappement pour accéder directement au contenu et les éléments de menu situés dans l&#8217;emplacement nommé «primary» dans le fichier <em>functions.php</em> où j&#8217;ai déclaré mes zones de menus personnalisés.</p>

<p>Les classes CSS <code>.visuallyhidden</code> et <code>.focusable</code> issues de <abbr title="HTML5 Boilerplate">H5BP</abbr>.  Sur l&#8217;élément <code>h1</code>, <code>.visuallyhidden</code> sert à masquer proprement le titre au cas où il ne serait pas essentiel dans votre mise en forme, tout en le rendant accessible aux lecteurs d&#8217;écran. Idem pour le lien d&#8217;évitement ; quant à la classe <code>.focusable</code>, elle permet de donner le <em>focus</em> à l&#8217;élément en question quand on navigue au clavier au clavier, par exemple.</p>

<p>→ Ressources :</p>

<ul>
    <li>W3C &#8211; <a href="http://www.w3.org/TR/html5/sections.html#the-nav-element">http://www.w3.org/TR/html5/sections.html#the-nav-element</a></li>
    <li>Codex &#8211; <a href="http://codex.wordpress.org/Function_Reference/wp_nav_menu">http://codex.wordpress.org/Function_Reference/wp_nav_menu</a></li>
</ul>

<h4>Début de #content</h4>

<p><pre>&lt;div id="content"&gt;</pre>
Cet élément englobe le contenu principal et les barre latérale. La balise de fermeture correspondante <code>&amp;lt;/div&amp;gt; &amp;lt;!-- eo #content --&amp;gt;</code> est située au tout début du fichier <em>footer.php</em>.</p>

<p>L&#8217;intérêt de commencer l&#8217;ouverture de cette <code>div</code> dans l&#8217;en-tête et de la terminer dans le pied de page réside dans le fait que les <em>Templates</em> de certains plugins (Newsletter, Agenda, etc.) placent leur contenu directement entre le <em>header</em> et le <em>footer</em>.</p>

<h3>index.php</h3>

<p><pre>&lt;?php get_header(); ?&gt;
    &lt;div id="primary" role="main"&gt;
        &lt;?php basics_content_nav( 'nav-above', 'menu' ); ?&gt;
    &lt;?php while ( have_posts() ) : the_post(); ?&gt;
        &lt;?php get_template_part( 'content', get_post_format() ); ?&gt;
    &lt;?php endwhile; ?&gt;
        &lt;?php basics_content_nav( 'nav-below', 'menu' ); ?&gt;
    &lt;/div&gt; &lt;!-- eo #main --&gt;
&lt;?php if ( ! is_singular() ) : ?&gt;
    &lt;?php get_sidebar( 'one' ); ?&gt;
&lt;?php endif; ?&gt;
    &lt;?php get_sidebar( 'two' ); ?&gt;
&lt;?php get_footer(); ?&gt;</pre>
Les fonctions <code>get_header()</code>,  <code>get_sidebar()</code> et <code>get_footer()</code> permettent d&#8217;inclure respectivement les fichiers <em>header.php</em>, <em>sidebar.php</em> et <em>footer.php</em>. Si l&#8217;on indique un paramètre entre les parenthèses, comme par exemple <code>get_header('home')</code>, c&#8217;est le fichier <em>header-home.php</em> qui sera inséré automatiquement. Dans notre cas, il s&#8217;agit des barres latérales<em> sidebar-one.php</em> et <em>sidebar-two.php</em>.</p>

<p>→ Ressources du Codex :</p>

<ul>
    <li><a href="http://codex.wordpress.org/Function_Reference/get_header">http://codex.wordpress.org/Function_Reference/get_header</a></li>
    <li><a href="http://codex.wordpress.org/Function_Reference/get_footer">http://codex.wordpress.org/Function_Reference/get_footer</a></li>
    <li><a href="http://codex.wordpress.org/Function_Reference/get_sidebar">http://codex.wordpress.org/Function_Reference/get_sidebar</a></li>
</ul>

<p>La balise div#primary contient le contenu principal (les articles), tandis que les barres latérales sont chargées d&#8217;afficher des contenus annexes regroupés chacun dans une balise <code>aside</code>.</p>

<h4>Conditional tag</h4>

<p>Le marqueur conditionnel <code>is_singular()</code> permet de vérifier si l&#8217;on se trouve dans le contexte d&#8217;un article seul, d&#8217;une page ou d&#8217;un fichier attaché</p>

<p>→ Ressources :</p>

<ul>
    <li>Codex &#8211; <a href="http://codex.wordpress.org/Conditional_Tags">http://codex.wordpress.org/Conditional_Tags</a></li>
</ul>

<h4>Navigation entre les articles</h4>

<p>La fonction <code>basics_content_nav()</code> située dans <em>functions.php</em> permet d&#8217;afficher les éléments pour naviguer dans la succession des billets «suivants» et «précédents». Le paramètre <code>nav-above</code> ou <code>nav-below</code> sert à préciser l&#8217;identifiant de la balise <code>nav</code>, selon qu&#8217;elle est située au-dessus des billets ou au-dessous ; le paramètre <code>menu</code> indique la classe associée à cet élément de navigation.</p>

<p>→ Ressources :</p>

<ul>
    <li>Codex &#8211; <a href="http://codex.wordpress.org/Function_Reference/posts_nav_link">http://codex.wordpress.org/Function_Reference/posts_nav_link</a></li>
</ul>

<h4>La boucle WordPress (The Loop)</h4>

<p>L&#8217;élément principal de ce fichier est constitué par la boucle qui permettra d&#8217;afficher le contenu des articles en appelant le contenu approprié en fonction du format du billet.</p>

<p>Les différents type de boucle seront détaillées dans un prochain article.</p>

<p>→ Ressources :</p>

<ul>
    <li>Codex &#8211; <a href="http://codex.wordpress.org/The_Loop">http://codex.wordpress.org/The_Loop</a></li>
</ul>

<h4>Types de format de contenus</h4>

<p>Les types de format pris en charge sont spécifier dans <em>functions.php</em>. Il s&#8217;agit de :</p>

<ul>
    <li>aside</li>
    <li>chat</li>
    <li>gallery</li>
    <li>link</li>
    <li>image</li>
    <li>quote</li>
    <li>status</li>
    <li>video</li>
    <li>audio</li>
</ul>

<p>Ces types de format ont été popularisés par des plate-formes comme <a href="http://www.tumblr.com">Tumblr</a> ou <a href="http://posterous.com">Posterous</a> qui permettent d&#8217;afficher différemment les contenus selon leur type. Le format <em>aside</em> a été popularisé par <a href="http://ma.tt/2004/05/asides/">Matt Mullenweg</a> qui l&#8217;utilisait pour donner des nouvelles brèves, sans titre, entre deux billets.</p>

<p>L&#8217;intérêt des <em>Post Format</em> réside dans le fait, qu&#8217;une fois paramétrés, ils permettent de diversifier la présentation des différents type de contenus que vous publiez sur votre site.</p>

<p>Le choix du type de contenu s&#8217;effectue depuis l&#8217;interface de rédaction des articles. Il s&#8217;agit d&#8217;une option à cocher parmi celles qui ont été définies dans votre thème dans <em>functions.php</em>.</p>

<p>Exemple d&#8217;activation de tous les types de format disponibles :
<pre>add_theme_support( 'post-formats', array( 'aside', 'gallery', 'link', 'image', 'quote', 'status', 'video', 'audio', 'chat' ) );</pre>
→ Ressources :</p>

<ul>
    <li>Codex &#8211; <a href="http://codex.wordpress.org/Post_Formats">http://codex.wordpress.org/Post_Formats</a></li>
</ul>

<h4>get_template_part</h4>

<p><pre>&lt;?php get_template_part( 'content', get_post_format() ); ?&gt;</pre>
Cette fonction ressemble beaucoup à ses petites soeurs <code>get_header()</code>, etc. il suffit de spécifier un ou deux paramètres pour que la magie s&#8217;opère :</p>

<ul>
    <li><code>get_template_part(  'content' )</code> &#8212; inclue automatiquement le fichier <em>content.php</em> situé à la racine de votre thème,</li>
    <li><code>get_template_part( 'content', 'home' )</code> &#8212; idem pour <em>content-home.php</em>,</li>
    <li><code>get_template_part(  'content', get_post_format() )</code> &#8212; idem pour <em>content-</em> suivi du type de format spécifié, tel que <em>content-aside.php</em>, <em>content-gallery.php</em>, etc.</li>
</ul>

<p>Cette dernière option est donc très pratique, puisqu&#8217;elle va chercher, comme une grande, le fichier spécialement conçu pour votre format de billet.</p>

<p>→ Ressources :</p>

<p>Codex &#8211; <a href="http://codex.wordpress.org/Function_Reference/is_singular"></a><a href="http://codex.wordpress.org/Function_Reference/get_template_part">http://codex.wordpress.org/Function_Reference/get_template_part</a></p>

<h3>content.php</h3>

<p>Le fichier <em>content.php</em> rassemble les éléments disponibles dans la boucle principale : le titre et le contenu de l&#8217;article, mais aussi les informations de date, d&#8217;auteur ainsi que les rubriques et les tags qui ont été associés à l&#8217;article lors de sa rédaction.
<pre>&lt;article id="post-&lt;?php the_ID(); ?&gt;" &lt;?php post_class(); ?&gt;&gt;
    &lt;header&gt;
        &lt;h1&gt;&lt;a href="&lt;?php the_permalink(); ?&gt;" title="&lt;?php printf( esc_attr__( 'Permalink to %s', 'basics' ), the_title_attribute( 'echo=0' ) ); ?&gt;" rel="bookmark"&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/h1&gt;
        &lt;?php if ( 'post' == $post-&gt;post_type ) : ?&gt;
        &lt;div class="entry-meta"&gt;
            &lt;?php echo basics_posted_on(); ?&gt;
        &lt;/div&gt;
        &lt;?php endif; ?&gt;
    &lt;/header&gt;
    &lt;?php if ( is_search() ) : // Only display Excerpts for search pages ?&gt;
    &lt;div class="entry-summary"&gt;
        &lt;?php the_excerpt( __( 'Continue reading &lt;span class="meta-nav"&gt;&amp;rarr;&lt;/span&gt;', 'basics' ) ); ?&gt;
    &lt;/div&gt;&lt;!-- eo .entry-summary --&gt;
    &lt;?php else : ?&gt;
    &lt;div class="entry-content"&gt;
        &lt;?php the_content( __( 'Continue reading &lt;span class="meta-nav"&gt;&amp;rarr;&lt;/span&gt;', 'basics' ) ); ?&gt;
        &lt;?php wp_link_pages( array( 'before' =&gt; '&lt;div class="page-link"&gt;' . __( 'Pages:', 'basics' ), 'after' =&gt; '&lt;/div&gt;' ) ); ?&gt;
    &lt;/div&gt; &lt;!-- eo .entry-content --&gt;
    &lt;?php endif; ?&gt;
    &lt;footer class="entry-meta"&gt;
        &lt;?php echo basics_posted_in(); ?&gt;
    &lt;/footer&gt; &lt;!-- eo #entry-meta --&gt;
&lt;/article&gt; &lt;!-- eo #post-&lt;?php the_ID(); ?&gt; --&gt;</pre>
On commence par une balise <code>article</code> qui affiche, entre les balises <code>header</code> et <code>footer</code>, soit un extrait du billet si le visiteur effectue une recherche sur votre site, soit le billet (complet ou non, selon que vous avez utilisé la balise &lt;!&#8211;more&#8211;&gt; ou non).</p>

<p>Les informations liées au billet comme la date de publication, le nom de l&#8217;auteur, la catégorie, les tags, etc. sont affichées via les fonctions <code>basics_posted_on()</code> et <code>basics_posted_in()</code> dans <em>functions.php</em>.</p>

<p>Ce fichier <em>content.php</em> peut servir de base pour la création d&#8217;autres <em>Templates</em>, comme je l&#8217;ai fait pour <em>content-news.php</em> appelé via la fonction<code>get_template_part()</code>.</p>

<h3>Barres latérales (Sidebar)</h3>

<p><em>Basics</em> est composé de deux sidebars appelés via <code>get_sidebar( 'one' )</code> et <code>get_sidebar( 'two' )</code>. J&#8217;ai choisi deux fichiers séparés pour faciliter le passage d&#8217;une à deux colonnes selon le contexte.</p>

<p>Chaque barre latérale est composée de trois zones de widget : une zone centrale avec du contenu par défaut tant que l&#8217;on ne fait rien glisser dedans, une zone facultative au-dessus, et une autre au-dessous.</p>

<p>Toutes les zones de widgets sont déclarées à l&#8217;avance dans <em>functions.php</em>.</p>

<h4>sidebar-one.php</h4>

<p><pre>&lt;div id="secondary" role="complementary"&gt;
    &lt;?php if ( is_active_sidebar( 'war-1' ) ) : ?&gt;
        &lt;div id="widget-area-1"&gt;
            &lt;?php dynamic_sidebar( 'war-1' ); ?&gt;
        &lt;/div&gt; &lt;!-- eo #widget-area-1 --&gt;
    &lt;?php endif; ?&gt;
    &lt;div id="widget-area-2"&gt;
    &lt;?php if ( ! dynamic_sidebar( 'war-2' ) ) : ?&gt;
        &lt;?php wp_nav_menu( array( 'theme_location' =&gt; 'second' ) ); ?&gt;
        &lt;aside id="archives"&gt;
            &lt;h1&gt;&lt;?php _e( 'Archives', 'basics' ); ?&gt;&lt;/h1&gt;
            &lt;ul&gt;
                &lt;?php wp_get_archives( array( 'type' =&gt; 'monthly' ) ); ?&gt;
            &lt;/ul&gt;
        &lt;/aside&gt;
        &lt;aside id="meta"&gt;
            &lt;h1&gt;&lt;?php _e( 'Meta', 'basics' ); ?&gt;&lt;/h1&gt;
            &lt;ul&gt;
                &lt;?php wp_register(); ?&gt;
                &lt;li&gt;&lt;?php wp_loginout(); ?&gt;&lt;/li&gt;
                &lt;?php wp_meta(); ?&gt;
            &lt;/ul&gt;
        &lt;/aside&gt;
    &lt;?php endif; ?&gt;
    &lt;/div&gt; &lt;!-- eo #widget-area-2 --&gt;
&lt;?php if ( is_active_sidebar( 'war-3' ) ) : ?&gt;
    &lt;div id="widget-area-3"&gt;
        &lt;?php dynamic_sidebar( 'war-3' ); ?&gt;
    &lt;/div&gt; &lt;!-- eo #widget-area-3 --&gt;
&lt;?php endif; ?&gt;
&lt;/div&gt; &lt;!-- eo #secondary --&gt;</pre></p>

<h4>sidebar-two.php</h4>

<p><pre>&lt;div id="tercery" role="complementary"&gt;
&lt;?php if ( is_active_sidebar( 'war-4' ) ) : ?&gt;
    &lt;div id="widget-area-4"&gt;
        &lt;?php dynamic_sidebar( 'war-4' ); ?&gt;
    &lt;/div&gt; &lt;!-- eo #widget-area-4 --&gt;
&lt;?php endif; ?&gt;
    &lt;div id="widget-area-5"&gt;
&lt;?php if ( ! dynamic_sidebar( 'war-5' ) ) : ?&gt;
        &lt;?php wp_nav_menu( array( 'theme_location' =&gt; 'third' ) ); ?&gt;
        &lt;aside id="search-in"&gt;
            &lt;?php get_search_form(); ?&gt;
        &lt;/aside&gt;
&lt;?php endif; ?&gt;
    &lt;/div&gt; &lt;!-- eo #widget-area-5 --&gt;
&lt;?php if ( is_active_sidebar( 'war-6' ) ) : ?&gt;
    &lt;div id="widget-area-6"&gt;
        &lt;?php dynamic_sidebar( 'war-6' ); ?&gt;
    &lt;/div&gt;&lt;!-- eo #widget-area-6 --&gt;
&lt;?php endif; ?&gt;
&lt;/div&gt; &lt;!-- eo #tercery --&gt;</pre></p>

<h3>searchform.php</h3>

<p>La fonction <code>get_search_form()</code> est prévue pour afficher le formulaire intégré dans le <em>core</em> de WordPress, sauf si le fichier <em>searchform.php</em> est présent à la racine du thème.
<pre>&lt;form action="&lt;?php echo home_url( '/' ); ?&gt;" method="get"&gt;
    &lt;fieldset&gt;
        &lt;label for="search" class="visuallyhidden focusable"&gt;&lt;?php _e( 'Search in ','basics' ); ?&gt;&lt;?php echo home_url( '/' ); ?&gt;&lt;/label&gt;
        &lt;input type="text" name="s" id="search" value="&lt;?php the_search_query(); ?&gt;" placeholder="&lt;?php _e( 'Search in ','basics' ); ?&gt;"&gt;
        &lt;input type="submit" value="&lt;?php _e( 'Search in ','basics' ); ?&gt;"&gt;
    &lt;/fieldset&gt;
&lt;/form&gt;</pre></p>

<h3>footer.php</h3>

<p><em>footer.php</em> est constitué 1) de la fin du document visible et 2) des appels de scripts placés là pour optimiser le temps de chargement de la page, comme cela est conseillé par <abbr title="HTML5 Boilerplate">H5BP</abbr>.</p>

<h4>Fermeture de la balise #content et pied de page</h4>

<p><pre>    &lt;/div&gt; &lt;!-- eo #content --&gt;
    &lt;footer id="content-info" role="contentinfo"&gt;
    &lt;?php if ( is_active_sidebar( 'war-7' ) ) : ?&gt;
        &lt;div id="widget-area-7"&gt;
            &lt;?php dynamic_sidebar( 'war-7' ); ?&gt;
        &lt;/div&gt; &lt;!-- eo #widget-area-7 --&gt;
    &lt;?php endif; ?&gt;
    &lt;?php wp_nav_menu( array( 'theme_location' =&gt; 'fourth' ) ); ?&gt;
    &lt;?php if ( ! dynamic_sidebar( 'war-8' ) ) : ?&gt;
        &lt;div id="widget-area-8"&gt;
            &lt;address&gt;
                &lt;?php <em>e('Contact the administrator '); ?&gt;&lt;a href="mailto:&lt;?php bloginfo('admin_email'); ?&gt;"&gt;&lt;?php bloginfo('admin_email'); ?&gt;&lt;/a&gt;
            &lt;/address&gt;
        &lt;/div&gt; &lt;!-- eo #widget-area-8 --&gt;
    &lt;?php endif; ?&gt;
    &lt;?php if ( is_active_sidebar( 'war-9' ) ) : ?&gt;
        &lt;div id="widget-area-9"&gt;
            &lt;?php dynamic_sidebar( 'war-9' ); ?&gt;
        &lt;/div&gt; &lt;!-- eo #widget-area-9 --&gt;
    &lt;?php endif; ?&gt;
    &lt;div id="credits"&gt;
        &lt;a href="http://wordpress.org/" rel="generator"&gt;&lt;?php _e( 'Proudly powered by WordPress', 'basics' ); ?&gt;&lt;/a&gt;&lt;span class="sep"&gt; | &lt;/span&gt;&lt;?php printf( _</em>( 'Theme: %1$s by %2$s.', 'basics' ), 'Basics', '&lt;a href="http://css4design.com/basics" rel="designer"&gt;WordPress je thème !&lt;/a&gt;' ); ?&gt;
    &lt;/div&gt;
    &lt;/footer&gt;
&lt;/div&gt; &lt;!-- eo #page --&gt;</pre></p>

<h4>Appels des script et fin de la page web</h4>

<p>Voici la fin du document HTML avec les liens vers les différentes bibliothèques dont vous pourriez avoir besoin. Mise à part le crochet <code>wp_footer()</code> qui permettra à vos plugins d&#8217;injecter du code dans cette zone, le reste suit la logique de <abbr title="HTML5 Boilerplate">H5BP</abbr>.
<pre>&lt;script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"&gt;&lt;/script&gt;
&lt;script&gt;window.jQuery || document.write("&lt;script src='&lt;?php bloginfo( 'template_directory' ); ?&gt;/js/libs/jquery-1.5.1.min.js'&gt;\x3C/script&gt;")&lt;/script&gt;
&lt;!-- scripts concatenated and minified via ant build script--&gt;
&lt;script src="&lt;?php bloginfo( 'template_directory' ); ?&gt;/js/plugins.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php bloginfo( 'template_directory' ); ?&gt;/js/script.js"&gt;&lt;/script&gt;
&lt;!-- end scripts--&gt;
&lt;!--[if lt IE 7 ]&gt;
&lt;script src="&lt;?php bloginfo( 'template_directory' ); ?&gt;/js/libs/dd_belatedpng.js"&gt;&lt;/script&gt;
&lt;script&gt;DD_belatedPNG.fix("img, .png_bg");&lt;/script&gt;
&lt;![endif]--&gt;
&lt;script&gt;
var _gaq=[["_setAccount","UA-514927-1"],["_trackPageview"]]; // Change UA-XXXXX-X to be your site's ID
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.async=1;
g.src=("https:"==location.protocol?"//ssl":"//www")+".google-analytics.com/ga.js";
s.parentNode.insertBefore(g,s)}(document,"script"));
&lt;/script&gt;
&lt;?php wp_footer(); ?&gt;
&lt;/body&gt;
&lt;/html&gt;</pre></p>

<h3>home.php</h3>

<p>Lorsqu&#8217;on réalise un site avec WordPress, on a souvent besoin d&#8217;afficher autre chose que la liste des derniers billets publiés en page d&#8217;accueil. C&#8217;est le rôle de ce fichier <em>home.php</em> qui contient deux boucles que vous pourrez personnaliser en modifiant les paramètres.</p>

<p>Merci au passage à @fabienthomas pour son aide. N&#8217;hésitez pas à le retrouver sur son <a href="http://blog.fabienthomas.com/">Blog perso et pas forcément sérieux d&#8217;un travailleur du Web</a>.
<pre>&lt;?php get_header(); ?&gt;
&lt;div id="main" role="main"&gt;
    &lt;!-- First loop: display the first post from the news's category --&gt;
    &lt;?php
    $paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
        $args = array(
            'category_name' =&gt; 'news',
            'posts_per_page' =&gt; 1,
            'paged' =&gt; $paged
        );
        $featured_query = new WP_Query( $args );
    ?&gt;
    &lt;?php if ( ! $featured_query-&gt;have_posts() ) : ?&gt;
        &lt;p class="error"&gt;&lt;?php _e( 'Posts not found. Tell the administrator that the category requested not exists.' ); ?
    &gt;&lt;/p&gt;
    &lt;?php endif; ?&gt;
    &lt;?php while ( $featured_query-&gt;have_posts() ) : $featured_query-&gt;the_post(); ?&gt;
        &lt;?php get_template_part( 'content', get_post_format() ); ?&gt;
    &lt;?php endwhile; wp_reset_postdata(); ?&gt;
    &lt;hr&gt;
    &lt;!-- Second loop: display the fifth followings posts from the same category as above --&gt;
    &lt;?php
        $paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
        $args = array(
            'category_name' =&gt; 'news',
            'posts_per_page' =&gt; 5,
            'offset' =&gt; 1,
            'paged' =&gt; $paged
        );
        $featured_query = new WP_Query( $args );
    ?&gt;
    &lt;?php while ( $featured_query-&gt;have_posts() ) : $featured_query-&gt;the_post(); ?&gt;
        &lt;?php get_template_part( 'content', 'news' ); ?&gt;
    &lt;?php endwhile; wp_reset_postdata(); ?&gt;
&lt;/div&gt; &lt;!-- eo #main --&gt;
&lt;?php get_sidebar( 'home' ); ?&gt;
&lt;?php get_footer(); ?&gt;</pre>
La première boucle affiche le dernier article publié dans la rubrique <em>News</em> en utilisant le fichier <em>conten-{post forma-}.php</em> tandis que la deuxième affiche les cinq articles précédents de cette même rubrique en appelant le fichier <em>content-news.php</em>. J&#8217;en ai profité pour inclure une barre latérale spécifique à la page d&#8217;accueil.</p>

<h3>Page 404</h3>

<p>Il est toujours utile d&#8217;afficher un message personnalisé à vos visiteurs lorsqu&#8217;une page n&#8217;existe plus.
<pre>&lt;?php get_header(); ?&gt;
&lt;div id="primary" role="main"&gt;
    &lt;?php get_template_part( 'content', '404' ); ?&gt;
&lt;/div&gt; &lt;!-- eo #primary --&gt;
&lt;?php get_sidebar( 'one' ); ?&gt;
&lt;?php get_sidebar( 'two' ); ?&gt;
&lt;?php get_footer(); ?&gt;</pre>
Cette page <em>404.php</em> fait appel au fichier <em>content-404.php</em> pour aider le visiteur à trouver ce qu&#8217;il cherche. C&#8217;est par ailleurs un exemple de structure que vous pourriez utiliser pour d&#8217;autres modèles de pages.</p>

<h2>Feuilles de style</h2>

<p>Juste un mot sur l&#8217;organisation des CSS. J&#8217;ai divisisé le fichier style.css &#8212; inclu dans le package <em>HTML5 Boilerplate</em> &#8212; en trois parties pour faciliter les mises à jour.</p>

<ul>
    <li>reset.css</li>
    <li>author.css</li>
    <li>tools.css</li>
</ul>

<p>Normalement, il n&#8217;y a pas besoin de toucher à <em>reset.css</em> ou <em>tools.css</em> : le fichier <em>author.css</em> est là pour accueillir votre prose.</p>

<p>La CSS <em>style.css</em> à la racine du thème précise uniquement les informations liées au thème pour WordPress et sert à importer les feuilles de style présentes dans le dossier <em>/css</em>.</p>

<p>Pour éviter que le nombre de requêtes HTTP liées à ces fichiers CSS ne grève les performances d&#8217;affichage de votre site, je vous conseille d&#8217;utiliser le <a href="http://js4design.com/minify-accelerer-affichage-pages-reduction-requetes-http-1166">script PHP Minify</a> ou son équivalent disponible dans <a href="http://wordpress.org/extend/plugins/w3-total-cache/">W3 Total Cache</a>.</p>

<h2>Dossier Utils</h2>

<p>Ce dossier contient quelques éléments issus de H5BP comme <em>robots.txt</em>, <em>humans.txt</em>, <em>.htaccess</em> que vous pouvez utiliser dès à présent.</p>

<h2>En bref</h2>

<p>Ce thème <em>Basics</em> devrait permettre de partir sur de bonnes base lors de la conception d&#8217;un thème WordPress en plus de refléter les nouvelles fonctionnalités qui ont fait leur apparition depuis la version 3.0. Les <em>Templates</em> pour personnaliser les commentaires sont inclus dans <em>Basics</em> mais feront l&#8217;objet d&#8217;un tutoriel dans «C comme commentaire» ;-)</p>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/wordpress-a-z-allons-y' title='WordPress de A à Z &#8212; A comme Allons-y ! (on s&#8217;organise)'>WordPress de A à Z &#8212; A comme Allons-y ! (on s&#8217;organise)</a></li><li><a href='http://css4design.com/wordpress-a-z-css' title='WordPress de A à Z &#8212; C comme CSS &amp; Composé HTML5'>WordPress de A à Z &#8212; C comme CSS &#038; Composé HTML5</a></li><li><a href='http://css4design.com/theme-wordpress-basics-0-2-6' title='Mise à jour du thème WordPress ♥ Basics avec HTML5 Boilerplate 2 '>Mise à jour du thème WordPress ♥ Basics avec HTML5 Boilerplate 2 </a></li><li><a href='http://css4design.com/wordpress-a-z-extension-plugin' title='WordPress de A à Z &#8212; E comme Extensions (les plugins)'>WordPress de A à Z &#8212; E comme Extensions (les plugins)</a></li><li><a href='http://css4design.com/programme-formation-html-css' title='Quelques notes &#8212; Programme de formation HTML &amp; CSS'>Quelques notes &#8212; Programme de formation HTML &#038; CSS</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=9998&amp;md5=e8d0882b91b0c1eb439c04c1c0abbb1f" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/creation-de-site-wordpress-de-a-a-z-b-comme-basics/feed</wfw:commentRss>
		<slash:comments>27</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=9998&amp;md5=e8d0882b91b0c1eb439c04c1c0abbb1f" type="text/html" />
	</item>
		<item>
		<title>WordPress de A à Z &#8212; A comme Allons-y ! (on s&#8217;organise)</title>
		<link>http://css4design.com/wordpress-a-z-allons-y</link>
		<comments>http://css4design.com/wordpress-a-z-allons-y#comments</comments>
		<pubDate>Tue, 12 Apr 2011 11:51:01 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress A à Z]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Edito]]></category>
		<category><![CDATA[Gabarit]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[HTML5 Boilerplate]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Thème]]></category>

		<guid isPermaLink="false">http://css4design.com/?p=9739</guid>
		<description><![CDATA[«A comme Allons-y !» est le premier billet d&#8217;une série d&#8217;articles sur la création d&#8217;un site internet avec WordPress que j&#8217;ai commencé avec Créer son site web avec WordPress de A à Z… avec le Codex. Il existe plusieurs approches pour mettre en place un site WordPress : modifier un thème existant ; ajouter les fonctions WP dans un gabarit HTML résultant de la découpe d&#8217;une maquette Photoshop ; ou créer les pages web directement dans le navigateur. Excepté pour le premier cas, on peut partir d&#8217;une feuille blanche, reprendre les éléments du projet précédent ou partir sur un thème minimaliste [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fwordpress-a-z-allons-y">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fwordpress-a-z-allons-y&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>«A comme Allons-y !» est le premier billet d&#8217;une série d&#8217;articles sur la création d&#8217;un site internet avec WordPress que j&#8217;ai commencé avec <a rel="bookmark" href="http://css4design.com/creer-son-site-web-avec-wordpress-de-a-a-z-avec-le-codex">Créer son site web avec WordPress de A à Z… avec le Codex</a>. Il existe plusieurs approches pour mettre en place un site WordPress : modifier un thème existant ; ajouter les fonctions WP dans un gabarit HTML résultant de la découpe d&#8217;une maquette Photoshop ; ou créer les pages web directement dans le navigateur. Excepté pour le premier cas, on peut partir d&#8217;une feuille blanche, reprendre les éléments du projet précédent ou partir sur un thème minimaliste que l&#8217;on aura choisi avec soin.<span id="more-9739"></span></p>

<p><a href="http://css4design.com/wp-content/uploads/2011/04/creation-theme-wordpress-a-z.png"><img class="alignnone size-full wp-image-9765" title="creation-theme-wordpress-a-z" src="http://css4design.com/wp-content/uploads/2011/04/creation-theme-wordpress-a-z.png" alt="" width="633" height="407" /></a></p>

<h2>Méthodes de conception : choisissez votre parfum</h2>

<p>Il existe probablement autant de méthodes qu&#8217;il y a d&#8217;intégrateur WordPress. Voici un aperçu des principales techniques que j&#8217;ai eu l&#8217;occasion de rencontrer.</p>

<h3>1. Modifier un thème WordPress</h3>

<p>Partir d&#8217;un thème existant est une pratique qui semble assez répandue. La personnalisation d&#8217;un site réalisé de cette manière consiste le plus souvent à :</p>

<ul>
    <li>Trouver un thème qui se rapproche le plus des besoins.</li>
    <li>Changer les couleurs du thème en ajoutant une feuille de style CSS après les autres, puis jouer sur la cascade pour «bypasser» les déclarations précédentes.</li>
    <li>Repérer les identifiants des éléments qui serviront de réceptacle pour les images de fond que l&#8217;on aura créés ou piochées sur le web pour l&#8217;occasion.</li>
    <li>Ne pas oublier de changer l&#8217;auteur du thème par son patronyme, bien entendu ^^</li>
</ul>

<h6>Si vous tenez absolument partir sur un thème WordPress existant, TwentyTen est votre ami ;-)</h6>

<div id="attachment_9774" class="wp-caption alignnone" style="width: 444px"><a href="http://css4design.com/wp-content/uploads/2011/04/theme-wordpress-twenty-ten.png"><img class="size-large wp-image-9774" title="theme-wordpress-twenty-ten" src="http://css4design.com/wp-content/uploads/2011/04/theme-wordpress-twenty-ten-434x338.png" alt="" width="434" height="338" /></a><p class="wp-caption-text">TwentyTen, le thème WordPress par défaut depuis la version 3</p></div>

<p>La première et dernière fois que j&#8217;ai utilisé cette méthode remonte à juin 2006 lors du lancement de ce blogzine. C&#8217;est dire tout le bien que je pense de cette méthode : les résultats sont rarement personnalisés. Ce genre de prestations est au web ce que la cuisine rapide est à la gastronomie : un mal parfois nécessaire&#8230; à éviter au maximum. Toutefois, cela permet de fournir rapidement un site web clés en main pour un client pressé ou avec un tout petit budget.</p>

<p>→ Si vous êtes souvent dans cette configuration, je vous invite à lire la partie du Codex intitulée <a href="http://codex.wordpress.org/Using_Themes">Using Themes</a>.</p>

<h3>2. Intégrer WordPress dans un gabarit HTML</h3>

<p>Cette méthode suppose que vous avez créé (ou que l&#8217;on vous a fourni) un ou plusieurs gabarits Photoshop. Après la découpe du fichier image, vous avez réalisé l&#8217;intégration HTML &amp; CSS. Vous obtenez généralement une page d&#8217;accueil et une page pour afficher le billet seul. A partir de ces deux gabarits, vous déclinerez les autres contextes d&#8217;affichage.</p>

<p>Cette méthode transforme un simple intégrateur web en intégrateur WordPress et lui ouvre un hublot sur la partie développement PHP. J&#8217;ai coutume de dire que WordPress, c&#8217;est le pote développeur toujours prêt à donner un coup de main. Bon, j&#8217;exagère, il est souvent utile d&#8217;avoir de vrais potes développeurs quand même ;-)</p>

<h6>Une fois finalisé, ce template Illustrator devrait faire un bon exemple d&#8217;intégration WordPress ! cf. <a rel="bookmark" href="http://css4design.com/logo-formateur-html5-css3">Super Formateur HTML &amp; CSS bientôt dans la place ?</a></h6>

<div id="attachment_9630" class="wp-caption alignnone" style="width: 444px"><a href="http://css4design.com/wp-content/uploads/2011/03/exemple-zoning-page-accueil-logo-bleu.png"><img class="size-large wp-image-9630" title="exemple-zoning-page-accueil-logo-bleu" src="http://css4design.com/wp-content/uploads/2011/03/exemple-zoning-page-accueil-logo-bleu-434x354.png" alt="Exemple zoning page accueil logo bleu" width="434" height="354" /></a><p class="wp-caption-text">Ex. de mise en scène du logo de ma prochaine activité de formateur web</p></div>

<p>→ Nous avons là, une méthode de travail éprouvée qui suit le flux de production habituel ce qui présente un intérêt certain en terme de contrôle qualité.</p>

<h3>3. Créer un site WordPress dans le navigateur</h3>

<p>Cette méthode fait l&#8217;impasse sur la partie maquette Photoshop comme préalable à l&#8217;intégration. Ce qui ne signifie pas que je délaisse mes outils de dessins préférés. Je les utilise pendant ou après la phase de mise en place de la structure du site. Cette méthode est un peu plus brouillonne que la précédente, mais permet de tester des nouveaux concepts, ce qu&#8217;il est déconseillé de faire lorsqu&#8217;on travaille pour un client. Je l&#8217;utilise plutôt pour mes projets perso.</p>

<h6>L&#8217;article <a rel="bookmark" href="http://css4design.com/conception-dans-le-navigateur-avec-html5-css3">Conception dans le navigateur avec HTML5 &amp; CSS3</a> explique comment utiliser HTML5 et CSS3 pour faire du web design dans Firefox ou Google Chrome !</h6>

<div id="attachment_6585" class="wp-caption alignnone" style="width: 444px"><a href="http://css4design.com/wp-content/uploads/2010/08/04-esquisse.png"><img class="size-large wp-image-6585" title="04-esquisse" src="http://css4design.com/wp-content/uploads/2010/08/04-esquisse-434x517.png" alt="" width="434" height="517" /></a><p class="wp-caption-text">Une esquisse rapide et hop ! on peut faire du webdesign dans le navigateur</p></div>

<h2>Commençons à travailler</h2>

<p>Maintenant que nous avons brièvement évoqué les différents moyens dont nous disposons pour aborder la création d&#8217;un site avec WordPress, nous pouvons commencer à mettre les mains dans le cambouis</p>

<h3>WordPress Boilerplate</h3>

<p><a href="http://css4design.com/wp-content/uploads/2011/02/star-html5-boilerplate.jpg"><img class="alignleft size-medium wp-image-9256" title="star-html5-boilerplate" src="http://css4design.com/wp-content/uploads/2011/02/star-html5-boilerplate-134x134.jpg" alt="" width="134" height="134" /></a>Jusqu&#8217;à il y a peu, j&#8217;avais l&#8217;habitude de partir d&#8217;une ossature, issue des derniers projets. Puis, je me suis laissé tenté par <a href="http://css4design.com/html5-boilerplate-1-0-est-dans-la-place">HTML5 Boilerplate</a> comme point de départ pour aboutir à un fichier <em>index.php</em> en HTML5 comprenant l&#8217;ensemble d&#8217;un blog de base : en-tête, contenu principal, barre latérale, pied de page, etc. avec quelques boucles de base, deux ou trois zones de menus et autant de zone de widgets.</p>

<h3>Thème Toolbox</h3>

<p><a href="http://css4design.com/wp-content/uploads/2011/04/theme-wordpress-toolbox.png"><img class="alignleft size-medium wp-image-9778" title="theme-wordpress-toolbox" src="http://css4design.com/wp-content/uploads/2011/04/theme-wordpress-toolbox-134x100.png" alt="" width="134" height="100" /></a>Je suis ensuite tombé sur le <a href="http://wp4design.com/toolbox-un-theme-wordpress-html5-par-automattic">thème Toolbox</a>. C&#8217;est probablement un des meilleurs thèmes minimalistes pour WordPress. Il m&#8217;a séduit par sa ressemblance conceptuelle avec le <a href="http://css4design.com/sandbox-un-theme-wordpress-pour-integrateurs-html-chic-qui-aiment-les-microformats">thème Sandbox</a>. Le fait qu&#8217;il soit créé par <a title="Inspired by you Striving to create good Nothing is perfect. *" href="http://automattic.com/">Automattic</a> y est peut-être pour quelque chose. C&#8217;est en tout cas un très bon point de départ si vous n&#8217;aimez pas être dérangé par les fioritures inutiles qui détournent votre attention : il vaut mieux se concentrer sur son travail que sur celui des autres ;)</p>

<h3>Organiser son plan de travail</h3>

<p>Une fois que j&#8217;ai obtenu le bon mix entre Toolbox et HTML5 boilerplate (de nombreux thèmes WordPress en HTML5 sont basés sur HTML5 Boilerplate et/ou sur Twenty Ten) et que l&#8217;arborescence des différents dossiers est opérationnelle, je crée un dossier «Grenier» dans lequel je déplace tous les fichiers du thème à l&#8217;exception de <em>index.php</em>, de <em>style.css</em> et de <em>functions.php</em> pour maitriser les différents contextes d&#8217;affichage.</p>

<p>Ainsi, je peux adapter <em>index.php</em> à mon projet puis le dupliquer en <em>single.php</em> en allant piocher dans le «Grenier» &#8212; le cas échéant &#8212; les fonctions du <em>core</em> de WordPress dont j&#8217;ai besoin à chaque fois. A moduler évidemment selon le nombre et la complexité des modifications : il peut être judicieux de n&#8217;ajouter que quelques balises aux fichiers d&#8217;origines du thème plutôt que dupliquer le fichier <em>index.php</em> !</p>

<p>→ Cette méthode permet de se concentrer sur l&#8217;essentiel et d&#8217;éviter de surcharger le thème avec des fichiers et des fonctions inutiles. Elle offre un bon compromis entre le fait de ne pas réinventer la roue à chaque projet tout en étant très flexible.</p>

<p>Note : j&#8217;ai pris l&#8217;habitude d&#8217;utiliser le minimum de fichier pour gérer les différents contextes d&#8217;affichage. Toutefois, la <a href="http://codex.wordpress.org/Template_Hierarchy">hiérarchie des Templates</a> nous suggère que l&#8217;existence de tous les contextes d&#8217;affichage pourrait avoir un impact sur les performances, vu que WordPress vérifie d&#8217;abord toute la chaine des fichiers possibles avant de se rabattre sur <em>index.php</em>. A ce niveau, les gains ou les pertes de performances sont-elles significatives ?</p>

<h3>Organiser les feuilles de style</h3>

<p>Comme  je conserve l&#8217;arborescence de HTML5 Boilerplate pour faciliter les mises à jour, j&#8217;ai deux fichiers style.css : celui du thème Toolbox dans <em>/montheme/style.css</em> et celui de H5BP dans <em>/montheme/css/style.css</em>. Je déplace donc une partie du deuxième dans le premier dans lesque je place les styles &laquo;&nbsp;Auteur&nbsp;&raquo; et les déclarations qui suivent pour respecter l&#8217;ordre des éléments préconisés par le Template H5BP.</p>

<p>Les autres feuille de style CSS dont j&#8217;ai besoin restent dans <em>/montheme/css/</em> et sont importées dans <em>montheme/style.css</em>. La question des performances due aux requêtes HTTP des multiples fichiers est réglé en fin du projet, généralement via le <a href="http://js4design.com/minify-accelerer-affichage-pages-reduction-requetes-http-1166">script PHP Minify</a> ou son équivalent disponible dans <a href="http://wordpress.org/extend/plugins/w3-total-cache/">W3 Total Cache</a>. Si vous n&#8217;aimez ni l&#8217;un ni l&#8217;autre, vous avez toujours la possibilité de faire des copiés-collés de vos fichiers CSS dans le fichier <em>style.css</em> principal, c&#8217;est toujours marrant ;-)</p>

<h3>En bref</h3>

<p>Pas beaucoup de Codex dans cette première partie qui sert surtout à planter le décors. Le Codex viendra en son temps. En attendant, nous somme prêts à intégrer notre maquette dans une environnement stable et évolutif à la fois : de projets en projets, il suffira de vérifier HTML5 Boilerplate ou Toolbox ont été mis à jour pour bénéficier d&#8217;un environnement à la pointe des dernières technologies et des bonnes pratique de développement, autant en ce qui concerne le web en général que WordPress en particulier. En effet, un thème comme Toolbox est susceptible de refléter les avancés de WordPress d&#8217;une manière générale</p>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/creation-de-site-wordpress-de-a-a-z-b-comme-basics' title='Création de site WordPress de A à Z &#8212; B comme Basics'>Création de site WordPress de A à Z &#8212; B comme Basics</a></li><li><a href='http://css4design.com/wordpress-a-z-css' title='WordPress de A à Z &#8212; C comme CSS &amp; Composé HTML5'>WordPress de A à Z &#8212; C comme CSS &#038; Composé HTML5</a></li><li><a href='http://css4design.com/theme-wordpress-basics-0-2-6' title='Mise à jour du thème WordPress ♥ Basics avec HTML5 Boilerplate 2 '>Mise à jour du thème WordPress ♥ Basics avec HTML5 Boilerplate 2 </a></li><li><a href='http://css4design.com/wordpress-a-z-extension-plugin' title='WordPress de A à Z &#8212; E comme Extensions (les plugins)'>WordPress de A à Z &#8212; E comme Extensions (les plugins)</a></li><li><a href='http://css4design.com/roots-theme-wordpress-html5-boilerplate' title='Roots &#8212; Thème WordPress à base de HTML5 Boilerplate'>Roots &#8212; Thème WordPress à base de HTML5 Boilerplate</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=9739&amp;md5=bb3af323025039e4c7bf866e59ba8392" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/wordpress-a-z-allons-y/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=9739&amp;md5=bb3af323025039e4c7bf866e59ba8392" type="text/html" />
	</item>
		<item>
		<title>Frameworks CSS &#8212; Fusion entre « Blueprint », « 960 Grid System » et « The Simpler Grid »</title>
		<link>http://css4design.com/frameworks-css-fusion-blueprint-960-gs-the-simpler-grid</link>
		<comments>http://css4design.com/frameworks-css-fusion-blueprint-960-gs-the-simpler-grid#comments</comments>
		<pubDate>Fri, 01 Apr 2011 15:30:57 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[HTML & CSS]]></category>
		<category><![CDATA[Intégration web]]></category>
		<category><![CDATA[960.gs]]></category>
		<category><![CDATA[Blueprint]]></category>
		<category><![CDATA[Edito]]></category>
		<category><![CDATA[Framework CSS]]></category>
		<category><![CDATA[Grille]]></category>
		<category><![CDATA[HTML5 Boilerplate]]></category>
		<category><![CDATA[IE7]]></category>
		<category><![CDATA[IE9]]></category>
		<category><![CDATA[Reset CSS]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[The Simpler Grid]]></category>

		<guid isPermaLink="false">http://css4design.com/?p=6188</guid>
		<description><![CDATA[Mon comparatif entre 960 Grid System et Blueprint CSS m&#8217;a permis de faire le point sur les fonctionnalités que l&#8217;on retrouve dans un framework CSS, en mettant en lumière leurs avantages et inconvénients respectifs. Tout naturellement, j&#8217;ai voulu les mélanger pour ne garder que le meilleur. Pour faire bonne mesure, j&#8217;ai ajouté The Simpler Grid découvert récemment que j&#8217;ai ajouté à ma réflexion pour créer un espèce de The Blue «940» Grid Simpler. J&#8217;envisage d&#8217;utiliser ce système de grille simple et efficace en complément du concentré de bonnes pratiques HTML5 Boilerplate. J&#8217;importe le fichier 940.css dans H5BP lors de la [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fframeworks-css-fusion-blueprint-960-gs-the-simpler-grid">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fframeworks-css-fusion-blueprint-960-gs-the-simpler-grid&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>Mon comparatif entre <a href="http://css4design.com/frameworks-css-blueprint-vs-960-grid-system">960 Grid System et Blueprint CSS</a> m&#8217;a permis de faire le point sur les fonctionnalités que l&#8217;on retrouve dans un framework CSS, en mettant en lumière leurs avantages et inconvénients respectifs. Tout naturellement, j&#8217;ai voulu les mélanger pour ne garder que le meilleur. Pour faire bonne mesure, j&#8217;ai ajouté <em>The Simpler Grid</em> découvert récemment que j&#8217;ai ajouté à ma réflexion pour créer un espèce de The Blue «940» Grid Simpler. J&#8217;envisage d&#8217;utiliser ce système de grille simple et efficace en complément du concentré de bonnes pratiques HTML5 Boilerplate.<span id="more-6188"></span></p>

<p>J&#8217;importe le fichier <code>940.css</code> dans <abbr title="HTML5 Boilerplate">H5BP</abbr> lors de la mise en place du <em>zoning</em> des pages web. Lorsque cette étape est validée, je fais le ménage dans le code HTML en supprimant les classes inhérentes au système de grille pour mettre les déclarations appropriées dans la feuille de style. En effet, <q>il existe de nombreuses raisons pour ne pas utiliser de frameworks CSS lors de la phase de conception ou d’intégration de votre site web : le poids, l’intrusion des classes CSS dans le code HTML qui devient la règle pour placer le moindre bloc de contenu, le fait que de nombreuses règles ne sont pas utilisées, etc. </q> <cite id="eyrolles-back"><a href="http://www.eyrolles.com/Informatique/Livre/css-avancees-9782212128260">CSS avancées &#8212; Vers HTML5 et CSS3</a>, page 72. <sup><a href="#eyrolles">(1)</a></sup></cite>.</p>

<p>C&#8217;est ainsi que  :
<pre>&lt;div id="logo" class="first span-6"&gt;</pre>
devient :
<pre>&lt;div id="logo"&gt;
&#35;logo {
    position: relative;
    float: left;
    width: 220px;
    clear: left;
}</pre>
Cela dit, si le site comporte un grand nombre de gabarits différents et/ou si ces gabarits sont susceptibles de <a href="http://css4design.com/framework-css-semantique-maquette-dynamique-et-autres-notes">changer dynamiquement selon le contexte</a>, il peut être judicieux de garder les classes de la grille dans le code HTML pour moduler le colonage en jouant uniquement sur les classes <code>.span-x</code>. En outre, il est facile de cibler le premier élément enfant en CSS ou en Javascript pour ajouter une classe <code>.first</code>. A cet égard, la prise en charge plus large de la pseudo-classe <code>:first-child</code> (à partir de IE7) par rapport à <code>:last-child</code> (à partir de IE9) milite en faveur de l&#8217;introduction de <em>The Simpler Grid</em> dans l&#8217;affaire (cf. <a title="Compatibilité CSS et Internet Explorer" href="http://msdn.microsoft.com/fr-fr/library/cc351024%28v=VS.85%29.aspx">Compatibilité CSS et Internet Explorer</a>).</p>

<h2>Système de grille sur mesure</h2>

<p>Suite au comparatif <em>960.gs vs. Blueprint</em>, j&#8217;ai décidé de fusionner les deux <em>frameworks</em> en faisait le minimum de modifications pour obtenir :</p>

<ol>
    <li>Le système de marge unique à droite proposé par <em>Blueprint</em> pour créer les gouttières entre les colonnes. L&#8217;ajout de la class `.last` est déjà un tue-l&#8217;amour de l&#8217;intégration, alors ne parlons pas des classes `.alpha` et `.omega` de <em>960 Grid System</em>.</li>
    <li>Le placement des colonnes dans la page indépendamment de leur position dans le code proposé par <em>960 Grid System</em> avec des classes `.push` et `.pull` plus concises grâce à la déclaration `position: relative;` sur chaque colonne.</li>
    <li>En chemin, j&#8217;ai été également tenté par <a href="http://webdesignerwall.com/tutorials/the-simpler-css-grid">The Simpler CSS Grid</a> qui reprend le meilleur de <em>960 Grid System</em> et de <em>Blueprint CSS</em> tout en diminuant légèrement le nombre de déclarations pour parvenir au même résultat.</li>
</ol>

<h6>Mis en place par Nick La de <a href="http://webdesignerwall.com/">Webdesigner Wall</a> (@nickla), The Grid Simpler revisite les frameworks CSS Blueprint et 960.gs</h6>

<div id="attachment_7615" class="wp-caption alignnone" style="width: 444px"><a href="http://css4design.com/wp-content/uploads/2010/10/simpler-grid.png"><img class="size-full wp-image-7615" title="simpler-grid" src="http://css4design.com/wp-content/uploads/2010/10/simpler-grid.png" alt="" width="434" height="434" /></a><p class="wp-caption-text">The Grid Simpler : une grille simple et souple </p></div>

<p>Contrairement à <em>Blueprint</em>, <em>The Simpler Grid</em> place la gouttière à gauche des colonnes. La classe <code>.last</code> est remplacée par <code>.first</code>, ce qui oblige par ailleurs à modifier les classes <code>.border</code> et <code>.colborder</code> dans la feuille de style pour créer des bordures à gauche des colonnes et non plus à droite. Ceci peut éventuellement être un problème (ou un avantage) selon votre maquette et la hauteur respective des zones situées de part et d&#8217;autre de la bordure. Selon le cas, la bordure peut suivre la hauteur de votre sidebar ou de votre zone de contenu.</p>

<p>Dans le code HTML, il faut aussi supprimer les classes <code>.last</code> et ajouter les classes <code>.first</code> en conséquence, sans oublier de modifier l&#8217;emplacement des classes <code>.border</code> et <code>.colborder</code>.</p>

<p>J&#8217;ai encore un peu de mal à me représenter cette gouttière à gauche des colonnes plutôt qu&#8217;à droite, certainement en raison des habitudes liées au sens de lecture mais je m&#8217;accroche ;)</p>

<h2>The Blue «940» Grid Simpler</h2>

<p>Après quelques tentatives aussi burlesques qu&#8217;inutiles pour proposer ma propre nomenclature pour le nom des différentes classes, j&#8217;ai conservé les intitulés de <em>Blueprint</em> qui permettent de profiter des <a href="http://css4design.com/boks-editeur-visuel-de-grilles-css-pour-blueprint">générateurs de grilles</a> disponibles sur le marché, comme <a href="http://toki-woki.net/p/Boks/">l&#8217;excellente application Air Boks</a> pour modifier plus rapidement le pas de la grille (il suffira de copier-coller les déclaration contenant des largeurs).</p>

<p>En ce qui concerne la grille elle-même, elle est composée de 24 colonnes de 20 pixels chacune séparées par une gouttière de 20 pixels en adaptant légèrement la technique évoquée dans l&#8217;article <a href="http://css4design.com/grille-typographique-nombre-d-or">Calculer une grille de mise en page « typo » avec le nombre d’Or</a>. Soit un interlignage de 20 pixels pour une taille de caractère de 13 pixel en utilisant : <code>font-size: 13px; line-height: 1.539</code>.</p>

<div id="attachment_9626" class="wp-caption alignnone" style="width: 625px"><a href="http://css4design.com/wp-content/uploads/2011/04/grille-mise-en-page-web-940px.png"><img class="size-full wp-image-9626" title="grille-mise-en-page-web-940px" src="http://css4design.com/wp-content/uploads/2011/04/grille-mise-en-page-web-940px.png" alt="" width="615" height="439" /></a><p class="wp-caption-text">Elément de base pour afficher une grille en background</p></div>

<p>Tout cela nous donne une largeur de 940 pixels. Il s&#8217;agit de la largeur utile disponible dans <em>960 Grid System</em> une fois que l&#8217;on a retranché les marges de 10 pixels à droite et à gauche. Pour retrouver ces marges &#8212; pour mettre une image en background, un dégradé CSS3 ou un simple aplat de couleur, par exemple &#8211;, il suffit d&#8217;indiquer une largeur de 960 pixels sur la balise <code>body</code> qui servira ainsi de container, <em>and the cat&#8217;s in the bag!</em></p>

<p>Astuce : l&#8217;excellent <a href="http://griddle.it">http://griddle.it</a> permet de créer l&#8217;image de votre grille personnalisée à la volée en ajoutant la largeur, le nombre de colonnes et la largeur de la gouttière à la fin de l&#8217;url comme <a href="http://griddle.it/940-24-20?vertical=20">http://griddle.it/940-24-20?vertical=20</a> ou <a href="http://griddle.it/940-12-20?vertical=20">http://griddle.it/940-12-20?vertical=20</a> par exemple.</p>

<p>Pour tester The Blue «940» Grid Simpler, je me suis basé sur les exemples de pages et de grilles disponibles dans les démonstrations de Blueprint CSS en adaptant le code source en conséquence.</p>

<ul>
    <li>→ <a href="http://css4design.com/exemples/940/css/940.css">The Blue «940» Grid Simpler</a>.</li>
    <li>→ <a href="http://css4design.com/exemples/940/grid.php">La démonstration</a> de la grille de Blueprint <a href="http://www.blueprintcss.org/tests/parts/grid.html">à comparer avec l&#8217;originale</a>.</li>
    <li>→ <a href="http://css4design.com/exemples/940/page.php">La démonstration</a> de l&#8217;échantillon de page <a href="http://www.blueprintcss.org/tests/parts/sample.html">à comparer avec l’originale</a>.</li>
    <li>→ Les avantages apportés par <a href="http://webdesignerwall.com/tutorials/the-simpler-css-grid">The Simpler Grid</a>.</li>
    <li>→ <a href="../frameworks-css-blueprint-vs-960-grid-system">Frameworks CSS — Blueprint vs 960 Grid System</a> pour plus d&#8217;information concernant les éléments ajoutés ou retranchés dans The Blue «940» Grid Simpler par rapport aux frameworks utilisés.</li>
    <li>→ Tous les articles concernant les <a href="http://css4design.com/tag/grille">grilles de mise en page web</a> et les <a href="http://css4design.com/tag/framework-css">frameworks CSS</a> sur ce blog.</li>
</ul>

<h2>Clearfix ?</h2>

<p>Si vous n&#8217;utilisez pas <em>HTML5 Boilerplate</em> <strong>et</strong> si vous avez besoin d&#8217;un <code>clearfix</code> (la classe <code>.first</code> peut ne pas suffire), ajoutez-donc quelques lignes à la fin de votre feuille de style principale et la classe <code>clearfix</code> sur les boites contenant des éléments <code>span</code> pour rétablir le flux :
<pre>.clearfix:before,
.clearfix:after {
    content: "\0020";
    display: block;
    height: 0;
    overflow: hidden;
}
.clearfix:after { clear: both; }
.clearfix { zoom: 1; }</pre>
<small id="eyrolles"><a href="#eyrolles-back">(1)</a> Petit clin-d’œil au dernier livre de <a href="http://www.goetter.fr/">Raphaël Goetter</a> que je remercie au passage pour la citation en attendant une fiche de lecture à venir concernant cet excellent ouvrage que je vous recommande d&#8217;acheter avant que les stocks soient épuisés !</small></p>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/frameworks-css-blueprint-vs-960-grid-system' title='Frameworks CSS &#8212; Blueprint vs 960 Grid System'>Frameworks CSS &#8212; Blueprint vs 960 Grid System</a></li><li><a href='http://css4design.com/css-selecteur-frere-adjacent' title='Sélecteur CSS de frère adjacent (Dirty Grids Done Dirt Cheap)'>Sélecteur CSS de frère adjacent (Dirty Grids Done Dirt Cheap)</a></li><li><a href='http://css4design.com/theme-wordpress-basics-0-2-6' title='Mise à jour du thème WordPress ♥ Basics avec HTML5 Boilerplate 2 '>Mise à jour du thème WordPress ♥ Basics avec HTML5 Boilerplate 2 </a></li><li><a href='http://css4design.com/creation-de-site-wordpress-de-a-a-z-b-comme-basics' title='Création de site WordPress de A à Z &#8212; B comme Basics'>Création de site WordPress de A à Z &#8212; B comme Basics</a></li><li><a href='http://css4design.com/wordpress-a-z-allons-y' title='WordPress de A à Z &#8212; A comme Allons-y ! (on s&#8217;organise)'>WordPress de A à Z &#8212; A comme Allons-y ! (on s&#8217;organise)</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=6188&amp;md5=2cc20cedf1b1e5fc71eb34c0cb5dd605" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/frameworks-css-fusion-blueprint-960-gs-the-simpler-grid/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=6188&amp;md5=2cc20cedf1b1e5fc71eb34c0cb5dd605" type="text/html" />
	</item>
		<item>
		<title>Créer son site web avec WordPress de A à Z&#8230; avec le Codex</title>
		<link>http://css4design.com/creer-son-site-web-avec-wordpress-de-a-a-z-avec-le-codex</link>
		<comments>http://css4design.com/creer-son-site-web-avec-wordpress-de-a-a-z-avec-le-codex#comments</comments>
		<pubDate>Fri, 18 Mar 2011 13:49:25 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress A à Z]]></category>
		<category><![CDATA[Codex]]></category>
		<category><![CDATA[Edito]]></category>
		<category><![CDATA[Logo]]></category>
		<category><![CDATA[Tag]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[The Loop]]></category>
		<category><![CDATA[Thème]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://css4design.com/?p=4405</guid>
		<description><![CDATA[La saga Créer son site web avec WordPress de A à Z&#8230; avec le Codex &#8212; et quelques ressources supplémentaires, ne boudons pas notre plaisir &#8211;, débutera avec «A, comme : Allons-y !» et se terminera avec «Z, comme Z&#8217;ai fini !». Cet article est un prologue, un galop d&#8217;essai, qui me permets de présenter rapidement les ressources essentielles concernant WordPress. Lors de la création d&#8217;un site (ou d&#8217;un blog, soyons fou !) avec WordPress, il m&#8217;arrive souvent de chercher des informations en dehors du Codex. Or, sept fois sur dix, le Codex propose la même chose, souvent en mieux. C&#8217;est une [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fcreer-son-site-web-avec-wordpress-de-a-a-z-avec-le-codex">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fcreer-son-site-web-avec-wordpress-de-a-a-z-avec-le-codex&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>La saga <em>Créer son site web avec WordPress de A à Z&#8230; avec le Codex</em> &#8212; et quelques ressources supplémentaires, ne boudons pas notre plaisir &#8211;, débutera avec «A, comme : Allons-y !» et se terminera avec «Z, comme Z&#8217;ai fini !». Cet article est un prologue, un galop d&#8217;essai, qui me permets de présenter rapidement les ressources essentielles concernant WordPress. Lors de la création d&#8217;un site (ou d&#8217;un blog, soyons fou !) avec WordPress, il m&#8217;arrive souvent de chercher des informations en dehors du Codex. Or, sept fois sur dix, le Codex propose la même chose, souvent en mieux. C&#8217;est une véritable mine d&#8217;information qu&#8217;il est profitable de consulter en première intention avant d&#8217;aller voir ailleurs si le code est plus vert. A ce propos, de nombreuses ressources ne font que reprendre le Codex avec plus ou moins de bonheur, alors autant puiser la connaissance directement à la source.<span id="more-4405"></span></p>

<h2>Le bonheur est dans le Codex ?</h2>

<p>Les exemples de codes disponibles dans le <a href="http://codex.wordpress.org/Main_Page">Codex</a> répondent généralement à une majorité de besoins et il suffit souvent de les copier-coller pour obtenir un résultat satisfaisant. Pour aller plus loin, il suffira de vous rendre sur les <a href="http://wordpress.org/support/">forums de WordPress</a> pour poser vos questions. Les réponses y sont généralement très pointues si vous prenez la peine de bien poser vos questions ;-)</p>

<p><small>Les liens contenus dans ce billet pointent vers la version anglaise du Codex. Il existe néanmoins une <a href="http://codex.wordpress.org/fr:Accueil">version française</a>, plus ou moins complète et à jour (ce qui explique ma préférence pour la version originale). J&#8217;imagine aussi que la majorité des intégrateurs et des développeurs WordPress ont les compétences nécessaires dans la langue de <del>Richard Stallman</del> William Shakespeare pour se débrouiller ;-)</small></p>

<p>N&#8217;hésitez pas à vous rendre sur WordPress-fr, la <a href="http://www.wordpress-fr.net/">communauté francophone du CMS WordPress</a>. Ne ratez pas le blog qui présente les dernières <a href="http://www.wordpress-fr.net/category/blog">actualités autour de WordPress</a> et faites le tour de la planète WordPress avec une sélection des articles publiés par des <a href="http://www.wordpress-fr.net/planet/">blogueurs amoureux de WordPress</a>.</p>

<h2>Qu&#8217;est-ce qu&#8217;un thème WordPress ?</h2>

<p>Faire un site avec WordPress revient à faire un <a href="http://codex.wordpress.org/Theme_Development">thème WordPress</a>. On peut faire un thème totalement fonctionnel avec deux fichiers seulement : <code>index.php</code> et <code>style.css</code>.</p>

<p><a href="http://codex.wordpress.org/Using_Themes">→ Using Themes</a> explique rapidement ce qu&#8217;est un thème WordPress.</p>

<h3>style.css</h3>

<p>Le moteur de WordPress attend que votre feuille de style comporte deux ou trois lignes précisant quelques informations. Elles permettront de retrouver votre thème dans les options du panneau d&#8217;administration de votre site. Les tags permettent par ailleurs de qualifier votre thème dans le moteur de <a href="http://wordpress.org/extend/themes/">recherche de thème</a> en donnant des renseignements sur la couleur, le nombre de colonnes, etc., ainsi que sur les fonctionnalités intégrées :</p>

<ul>
    <li><a title="Post Thumbnails" href="http://codex.wordpress.org/Post_Thumbnails">Post Thumbnails</a> (vignettes miniatures)</li>
    <li><a title="Navigation Menus" href="http://codex.wordpress.org/Navigation_Menus">Navigation Menus</a> (menus de navigation)</li>
    <li><a title="Widgets API" href="http://codex.wordpress.org/Widgets_API">Widgets</a></li>
    <li><a title="Post Formats" href="http://codex.wordpress.org/Post_Formats">Post Formats</a> (format de billet)</li>
    <li><a title="Custom Backgrounds (page does not exist)" href="http://codex.wordpress.org/index.php?title=Custom_Backgrounds&amp;action=edit&amp;redlink=1">Custom Backgrounds</a> (fonds de page personnalisés)</li>
    <li><a title="Custom Headers" href="http://codex.wordpress.org/Custom_Headers">Custom Headers</a> (Image d&#8217;en-tête personnalisée)</li>
    <li><a title="Editor Style (page does not exist)" href="http://codex.wordpress.org/index.php?title=Editor_Style&amp;action=edit&amp;redlink=1">Editor Style</a> (style pour l&#8217;édition des billets)</li>
    <li><a title="Automatic Feed Links (page does not exist)" href="http://codex.wordpress.org/index.php?title=Automatic_Feed_Links&amp;action=edit&amp;redlink=1">Automatic Feed Links</a></li>
</ul>

<p>Voici le code permettant à votre CSS <code>style.css</code> d&#8217;être reconnue :
<pre>/*
Theme Name: WTF
Theme URI: http://css4design.com/wtf/
Description: WordPress Theme Framework
Author: Bibi
Author URI: http://css4design.com/a-propos/
Version: 0.1
Tags: black, blue, white, two-columns, fixed-width, custom-header, custom-background, threaded-comments, sticky-post
*/</pre>
En dehors de l&#8217;administration du site pour le choix du thème, il est possible de récupérer ces <a href="http://codex.wordpress.org/File_Header">informations d&#8217;en-tête de fichiers</a>. Pour afficher le nom de l&#8217;intégrateur et son site web, on peut utiliser la fonction <code>get_theme_data()</code> :
<pre>&lt;?php
$theme_data = get_theme_data(ABSPATH . 'wp-content/themes/default/style.css');
echo $theme_data['Title'];
echo $theme_data['Author'];
?&gt;</pre></p>

<h3>index.php</h3>

<p>Ce fichier contient les appels de fonction du moteur de WordPress et les boucles PHP permettant d&#8217;afficher les contenus. Ce seul fichier peut gérer tout les contextes d&#8217;affichage (archives, recherche, page d&#8217;erreur, etc.).  Dans la terminologie de WordPress, ces appels de fonctions s&#8217;appellent des <a href="http://codex.wordpress.org/Stepping_Into_Template_Tags">Template tags</a>, autrement dit, des marqueurs de modèles. Rien de très compliqué, il suffit de se laisser guider par le Codex.</p>

<p>Par exemple, pour afficher le nom du site et sa description, on fera appel à la fonction <a href="http://codex.wordpress.org/Template_Tags/bloginfo">bloginfo()</a> :
<pre>&lt;a href="&lt;?php bloginfo('url'); ?&gt;"&gt;
    &lt;?php bloginfo('name'); ?&gt;
&lt;/a&gt;</pre></p>

<h2>Comprendre la hiérarchie des templates</h2>

<p>Si le fichier <code>index.php</code> vu plus haut peut afficher tous les contextes d&#8217;affichage (accueil, pages, article seul, catégories, tags, etc.), il est possible de créer autant de fichiers que de contexte pour personnaliser vos templates. Ainsi, si une page.php existe, elle sera utilisée à la place de <code>index.php</code>, c&#8217;est la même chose pour <code>tag.php</code>, <code>search.php</code>, <code>category.php</code>, etc.</p>

<h6>Ce diagramme montre quel modèle de fichier est appelé pour générer une page en fonction de la hiérarchie des différents modèles.</h6>

<div id="attachment_9400" class="wp-caption alignleft" style="width: 444px"><a href="http://css4design.com/wp-content/uploads/2011/03/hierarchie-template-wordpress.png"><img class="size-large wp-image-9400" title="hierarchie-template-wordpress" src="http://css4design.com/wp-content/uploads/2011/03/hierarchie-template-wordpress-434x204.png" alt="" width="434" height="204" /></a><p class="wp-caption-text">La hiérarchie des templates dans WordPress. Cliquez pour agrandir l&#39;image.</p></div>

<p>A Chaque fichier PHP correspond une fonction permettant de tester si l&#8217;on se trouve dans un contexte d&#8217;affichage ou non. Par exemple, en utilisant uniquement le fichier <code>index.php</code>, on peut mettre un marquage HTML différent pour le contexte des catégories avec <code>is_category()</code> ; des pages avec <code>is_page()</code>, dans une page affichant l&#8217;article complet avec <code>is_single()</code>, etc.</p>

<p>→ Lire la page consacrée aux <a href="http://codex.wordpress.org/Conditional_Tags">tag conditionnels</a>.</p>

<h2>The Loop (1)</h2>

<p>Le coeur de WordPress est consitué par la boucle (<em>The Loop</em>). Il s&#8217;agit d&#8217;un ensemble de fonction qui collecte les variables nécessaires à l&#8217;affichage des informations comme le titre de l&#8217;article, la date de publication, l&#8217;auteur, le contenu du billet lui-même et tout un tas d&#8217;autres choses dont l&#8217;énumération serait bien fastidieuse.</p>

<p>Exemple minimal de boucle :
<pre>&lt;?php if (have_posts()) : ?&gt;
    &lt;?php while (have_posts()) : the_post(); ?&gt;
        &lt;!-- do stuff ... --&gt;
    &lt;?php endwhile; ?&gt;
&lt;?php endif; ?&gt;</pre>
→ Lire <a href="http://codex.wordpress.org/The_Loop">The Loop</a>.</p>

<p>(1) Les titres auxquels vous avez échappé jusque là : <em>Danse avec les loops</em> ; <em>She got the loop</em>, <em>Loop, y es tu ? T&#8217;en loop pas une&#8230;</em> ;-)</p>

<h2>Les marqueurs de modèle (Template Tags)</h2>

<p>Il s&#8217;agit des variables ramenées par la boucle. Leur utilisation est très simple : il suffit par exemple d&#8217;appeller <code>&amp;lt;?php the_title(); ?&amp;gt;</code> pour afficher le titre du billet. De nombreux marqueurs comme <code>the_title()</code> doivent être utilisés à l&#8217;intérieur de la boucle tandis que d&#8217;autres sont plus génériques et peuvent servir à afficher la barre latérale de votre site, comme <code>get_sidebar()</code> si le coeur vous en dit.</p>

<p>→ Lire <a href="http://codex.wordpress.org/Template_Tags">Template Tags</a>.</p>

<h2>WordPress &amp; Webdesign</h2>

<p>J&#8217;en profite également pour attirer votre attention sur mon petit blog <a href="http://wp4design.com">WordPress &amp; Webdesign</a> (<em>WP 4 Design</em>) où vous trouverez des nouvelles de WordPress sur le même principe que <a href="http://js4design.com">Javascript et Webdesign</a> (<em>JS 4 Design</em>) : des articles brefs mais courts.</p>

<p>Voici en avant-première une ébauche de logo pour l&#8217;en-tête de <em>WP 4 Design</em>. N&#8217;hésitez pas à me dire ce que vous en pensez. OK, c&#8217;est un peu plus qu&#8217;une ébauche, mais rien de définitif, surtout en ce qui concerne les couleurs.</p>

<div id="attachment_9409" class="wp-caption aligncenter" style="width: 625px"><a href="http://wp4design.com"><img class="size-full wp-image-9409 " title="logo-wordpress-je-theme" src="http://css4design.com/wp-content/uploads/2011/03/logo-wordpress-je-theme1.png" alt="" width="615" height="147" /></a><p class="wp-caption-text">Ebauche de logo pour WordPress &amp; Webdesign</p></div>

<p>Comme d&#8217;habitude, j&#8217;ai commencé par le commencement, c&#8217;est-à-dire le contenu avant de réfléchir à son organisation. En attendant d&#8217;avoir pris un rythme de croisière pour mettre en place un design digne de ce nom, j&#8217;ai installé <a href="http://wordpress.org/extend/themes/toolbox">Toolbox</a>. C&#8217;est un thème minimaliste HTML5 créé par Auttomatic croisé avec <a href="http://html5boilerplate.com/">HTML5 boilerplate</a>.</p>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/wordpress-a-z-allons-y' title='WordPress de A à Z &#8212; A comme Allons-y ! (on s&#8217;organise)'>WordPress de A à Z &#8212; A comme Allons-y ! (on s&#8217;organise)</a></li><li><a href='http://css4design.com/quel-tarif-pour-un-theme-wordpress' title='Quel tarif pour un thème WordPress ?'>Quel tarif pour un thème WordPress ?</a></li><li><a href='http://css4design.com/wordpress-a-z-extension-plugin' title='WordPress de A à Z &#8212; E comme Extensions (les plugins)'>WordPress de A à Z &#8212; E comme Extensions (les plugins)</a></li><li><a href='http://css4design.com/creation-de-site-wordpress-de-a-a-z-b-comme-basics' title='Création de site WordPress de A à Z &#8212; B comme Basics'>Création de site WordPress de A à Z &#8212; B comme Basics</a></li><li><a href='http://css4design.com/wordpress-je-theme' title='WordPress je thème'>WordPress je thème</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=4405&amp;md5=04f83f3f7ce23004e6f02d45f9dd5f2f" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/creer-son-site-web-avec-wordpress-de-a-a-z-avec-le-codex/feed</wfw:commentRss>
		<slash:comments>21</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=4405&amp;md5=04f83f3f7ce23004e6f02d45f9dd5f2f" type="text/html" />
	</item>
		<item>
		<title>Quel tarif pour un thème WordPress ?</title>
		<link>http://css4design.com/quel-tarif-pour-un-theme-wordpress</link>
		<comments>http://css4design.com/quel-tarif-pour-un-theme-wordpress#comments</comments>
		<pubDate>Thu, 24 Jun 2010 12:36:25 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Conception de site web]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Edito]]></category>
		<category><![CDATA[Prestations]]></category>
		<category><![CDATA[Quelques notes]]></category>
		<category><![CDATA[Tarif]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Thème]]></category>

		<guid isPermaLink="false">http://css4design.com/?p=6390</guid>
		<description><![CDATA[C&#8217;est une question récurrente : mais combien coûte un thème WordPress ? A cette question simple, je voudrais apporter quelques éléments de réflexion. J&#8217;ai la conviction qu&#8217;une réponse toute faite ne peut être juste. Par ailleurs, je trouve qu&#8217;il règne une certaine hypocrisie sur la formation des prix dans le Webdesign. Il semble normal &#8212; lorsqu&#8217;on achète une voiture ou une machine à laver &#8212; de donner des indices sur le budget que l&#8217;on est prêt à consacrer. Dans le Web Design (et sans doute dans les prestations de services en général), la question du budget semble taboue. J&#8217;ai même parfois [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fquel-tarif-pour-un-theme-wordpress">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fquel-tarif-pour-un-theme-wordpress&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>C&#8217;est une question récurrente : mais combien coûte un thème WordPress ? A cette question simple, je voudrais apporter quelques éléments de réflexion. J&#8217;ai la conviction qu&#8217;une réponse toute faite ne peut être juste. Par ailleurs, je trouve qu&#8217;il règne une certaine hypocrisie sur la formation des prix dans le Webdesign. Il semble normal &#8212; lorsqu&#8217;on achète une voiture ou une machine à laver &#8212; de donner des indices sur le budget que l&#8217;on est prêt à consacrer. Dans le Web Design (et sans doute dans les prestations de services en général), la question du budget semble taboue. J&#8217;ai même parfois l&#8217;impression que les clients potentiels ne se posent pas la question, comme si l&#8217;on vendait du vent ; pourtant, livrer un site Web correspondant aux besoins du client n&#8217;est pas une mince affaire et demande beaucoup de travail, y compris en utilisant un CMS comme <a href="http://www.wordpress-fr.net/">WordPress </a>(mais c&#8217;est valable aussi pour <a href="http://drupalfr.org/">Drupal</a>, <a href="http://pluxml.org/">Pluxml</a> ou <a href="http://neko-cms.elseif.eu/">NekoCMS</a>).<span id="more-6390"></span></p>

<h2>5 étapes pour concevoir un thème WordPress</h2>

<p>La création d&#8217;un thème pour le CMS WordPress se décompose idéalement en cinq étapes :</p>

<ol>
    <li><strong>Recueil des besoins</strong> &#8212; Réception d&#8217;un email expliquant le contexte de la demande ou document plus complexe en plusieurs partie (cahier des charges ?).</li>
    <li><strong>Récapitulatif des besoins</strong> &#8212; Envoi d&#8217;un email précisant ce qui sera effectivement vendu, en tenant compte du périmètre des fonctionnalités retenues (document à faire valider avant d&#8217;attaquer le point n°3).</li>
    <li><strong>Conception de la charte graphique</strong> &#8212;  Il s&#8217;agit de formaliser graphiquement les besoins du client (à cette étape, il a versé 30% de la commande) en présentant une ou plusieurs pistes graphiques selon ce qui aura été défini à l&#8217;étape précédente. Notez que le nombre de proposition est souvent lié avec l&#8217;importance du budget alloué (document à faire valider avant d&#8217;attaquer le point n°4).</li>
    <li><strong>Intégration Web</strong> (HTML, CSS &amp; jQuery) &#8212; Lorsque la charte graphique est acceptée et que les BAT sont OK, il est temps de transmuter le design réalisé sous Photoshop dans un format lisible par les navigateurs.</li>
    <li><strong>Mise en place des fonctions WordPress</strong> &#8212; Affichage des billets et autres éléments constitutifs du blog ou du site Web (ne soyons pas sectaire).</li>
</ol>

<p>A cela, il faut ajouter les allers-retours pour les modifications (corrections, changements, etc.) qui sont chronophages&#8230; Vous l&#8217;aurez compris : la mise en place d&#8217;un thème WordPress ne diffère en rien de la mise en place d&#8217;un site Web dynamique ! La seule différence, c&#8217;est le point n°5 qui permet de faire l&#8217;économie de la partie PHP/MySQL : les équipes de WordPress ont déjà fait tout le travail de développement.</p>

<p>L&#8217;intérêt d&#8217;utiliser WordPress pour son site Web ou son blog, c&#8217;est de pouvoir profiter de l&#8217;étendue des fonctionnalités proposées par ce CMS, sans compter la qualité du <em>Back Office</em> accessible aux utilisateurs les moins avertis. On peut dire que WordPress est l&#8217;ami développeur PHP/MySQL qui travaille gratuitement, ou presque.</p>

<p>Toutefois, et sans vouloir relancer la polémique pour savoir si l&#8217;on peut parler de <a href="http://css4design.com/dites-wordpress-pas-weirdpress">développement WordPress</a>, il faut savoir que l&#8217;API de WordPress ne vient pas s&#8217;intégrer toute seule dans la maquette. Il faut un minimum de connaissance en développement Web (PHP, MySQL) pour mettre en place un thème WordPress un peu complexe. Et il est normal que le tarif en tienne compte.</p>

<h2>Un thème, des Templates ?</h2>

<p>J&#8217;allais oublier. Maintenant que nous avons en tête toutes les étapes nécessaires, il faut encore prendre en compte le fait qu&#8217;un thème WordPress est composé d&#8217;un nombre de <em>Templates</em> variable selon les besoins exprimés à l&#8217;étape n°1 et retenus à l&#8217;étape n°2.</p>

<p>Un thème WordPress peut se composer d&#8217;un seul modèle de page (<em>index.php</em>) pour accueillir l&#8217;ensemble des contextes d&#8217;affichage possibles (catégories, tags, recherche, articles seul, images, etc.). Le thème WordPress par défaut (<a href="http://2010dev.wordpress.com/">Twenty Ten</a>) comporte plus de 10 <em>Templates</em>. Le tarif tiendra évidemment compte à la fois du nombre de <em>Templates</em> et des différences qu&#8217;ils présentent entre eux.</p>

<h2>Et les plugins ?</h2>

<p>Qui dit WordPress, dit Plugins. Il est rare d&#8217;installer WordPress sans passer par le menu <em>Extensions</em>. Celles-ci peuvent nécessiter des réglages de configuration plus ou moins complexes. Certaines nécessitent de mettre les mains dans les <em>Templates</em> et les fichiers CSS pour adapter le code HTML produit en sortie à votre charte graphique toute neuve.</p>

<h2>Combien ça coooûûûte !</h2>

<p><em>cf.</em> point n°1 ;)</p>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/wordpress-a-z-allons-y' title='WordPress de A à Z &#8212; A comme Allons-y ! (on s&#8217;organise)'>WordPress de A à Z &#8212; A comme Allons-y ! (on s&#8217;organise)</a></li><li><a href='http://css4design.com/creer-son-site-web-avec-wordpress-de-a-a-z-avec-le-codex' title='Créer son site web avec WordPress de A à Z&#8230; avec le Codex'>Créer son site web avec WordPress de A à Z&#8230; avec le Codex</a></li><li><a href='http://css4design.com/creation-de-site-wordpress-de-a-a-z-b-comme-basics' title='Création de site WordPress de A à Z &#8212; B comme Basics'>Création de site WordPress de A à Z &#8212; B comme Basics</a></li><li><a href='http://css4design.com/performances-web-avec-wordpress-mefiez-vous-des-themes-frameworks' title='Performances web avec WordPress : méfiez-vous des &laquo; Themes Frameworks &raquo;'>Performances web avec WordPress : méfiez-vous des &laquo; Themes Frameworks &raquo;</a></li><li><a href='http://css4design.com/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu' title='Danse avec les loops #1 : un thème WordPress mis à nu'>Danse avec les loops #1 : un thème WordPress mis à nu</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=6390&amp;md5=d1ba517912a912bce7174e29332040e2" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/quel-tarif-pour-un-theme-wordpress/feed</wfw:commentRss>
		<slash:comments>71</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=6390&amp;md5=d1ba517912a912bce7174e29332040e2" type="text/html" />
	</item>
		<item>
		<title>WordPress &#8212; Menus «funky» avec wp_list_bookmarks()</title>
		<link>http://css4design.com/wordpress-menu-funky-avec-wp_list_bookmarks</link>
		<comments>http://css4design.com/wordpress-menu-funky-avec-wp_list_bookmarks#comments</comments>
		<pubDate>Wed, 24 Feb 2010 18:56:47 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Menu]]></category>
		<category><![CDATA[Navigation]]></category>
		<category><![CDATA[Système de gestion de contenu (CMS)]]></category>
		<category><![CDATA[Template]]></category>

		<guid isPermaLink="false">http://css4design.com/?p=5410</guid>
		<description><![CDATA[WordPress est un CMS formidable, ce qui ne l&#8217;empêche pas d&#8217;avoir des lacunes. L&#8217;une d&#8217;elle concerne la possibilité de construire des menus composés de liens vers des pages ou des articles publiés sur le blog, ce qui est courant avec des CMS comme Drupal ou Joomla. En général, je me contente de créer mon menu en HTML et ça fonctionne très bien. Toutefois, cette solution n&#8217;est pas toujours très évidente à maintenir. Voici la solution que j&#8217;ai retenue pour la mise en place des liens pointant vers les articles que je souhaitais mettre en avant sur ce blog. La fonction [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fwordpress-menu-funky-avec-wp_list_bookmarks">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fwordpress-menu-funky-avec-wp_list_bookmarks&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p><a href="http://css4design.com/dites-wordpress-pas-weirdpress">WordPress est un CMS formidable</a>, ce qui ne l&#8217;empêche pas d&#8217;<a href="http://css4design.com/que-manque-t-il-a-wordpress">avoir des lacunes</a>. L&#8217;une d&#8217;elle concerne la possibilité de construire des menus composés de liens vers des pages ou des articles publiés sur le blog, ce qui est courant avec des CMS comme <a href="http://drupalfr.org/">Drupal</a> ou <a href="http://www.joomla.fr/">Joomla</a>. En général, je me contente de créer mon menu en HTML et ça fonctionne très bien. Toutefois, cette solution n&#8217;est pas toujours très évidente à maintenir. Voici la solution que j&#8217;ai retenue pour la mise en place des liens pointant vers les articles que je souhaitais mettre en avant sur ce blog.<span id="more-5410"></span></p>

<h2>La fonction wp_list_bookmarks()</h2>

<p>La fonction <a href="http://codex.wordpress.org/Template_Tags/wp_list_bookmarks">wp_list_bookmarks()</a> possède plusieurs arguments intéressants dont l&#8217;identifiant de la catégorie à afficher <em>category=386</em> et <em>before</em> et <em>after</em> qui permettent de spécifier les balises HTML que vous voulez avant et après chaque élément de liste. Par défaut, il s&#8217;agit de la balise <code>li</code>. Toutefois, pour une bonne gestion des coins arrondis, j&#8217;ai ajouté une balise <code>p</code> (oui, un <code>p</code> dans le <code>li</code>, ça manque d&#8217;élégance&#8230; ), ce qui oblige à préciser explicitement les balises <code>li</code>.
<pre>&lt;div id="featured-posts" class="wrapper"&gt;
    &lt;ul&gt;
        &lt;?php echo wp_list_bookmarks('title_li=&amp;categorize=0&amp;category=386&amp;before=&lt;li&gt;&lt;p&gt;&amp;after=&lt;/p&gt;&lt;/li&gt;'); ?&gt;
    &lt;/ul&gt;
&lt;/div&gt;</pre></p>

<h2>Une pincée de CSS3 pour épicer le menu</h2>

<p><pre>&#35;featured-posts ul {
    margin: 0;
    padding: 0;
    list-style: none;
}
&#35;featured-posts li {
    float: left;
    width: 102px;
    margin-right: 18px;
}
&#35;featured-posts li:hover {
    background: #2F0615;
    color: #fff;
/*
* Coins arrondis
<em>/
    -moz-border-radius: 5px 0 5px 0;
    -webkit-border-radius: 5px 0 5px 0;
    border-radius: 5px 0 5px 0;
    -webkit-border-top-left-radius: 5px;
    -webkit-border-top-right-radius: 0;
    -webkit-border-bottom-left-radius: 0;
    -webkit-border-bottom-right-radius: 5px;
/</em>
* Ombres portées
*/
    -webkit-box-shadow: #aaa 3px 3px 3px;
    -moz-box-shadow: #aaa 3px 3px 3px;
    box-shadow: #aaa 3px 3px 3px;
}</pre>
En fonction de la <a href="http://css4design.com/css-4-design-nouvelle-charte-graphique-et-redesign-du-logo">grille de mise en page</a> que j&#8217;ai mise en place sur ce blog, j&#8217;ai opté pour l&#8217;affichage de 8 liens occupant chacun 2 colonnes sur les 16 disponibles. Si vous voulez disposer d&#8217;un deuxième menu comme celui que j&#8217;ai ajouté dans mon pied de page, il suffit de dupliquer la fonction wp_list_bookmarks, de changer l&#8217;<code>id</code> de la catégorie des liens et de remplacer <code>#featured-posts</code> par <code>.featured-posts</code> <em>and the cat&#8217;s in the bag!</em></p>

<p class="small">Note : si vous aviez déjà utilisé le <em>Widget Liens</em> dans votre barre latérale, cette catégorie est affichée deux fois. Pour la supprimer de votre <em>blogroll</em> faites glisser le <em>Widget Liens</em>, sélectionnez la catégorie dans le menu déroulant et répétez l&#8217;opération autant de fois que nécessaire.</p>

<h2>Pour finir</h2>

<p>Oui,  toutes ces opérations sont un peu fastidieuses, mais je n&#8217;ai pas encore trouvé mieux à part attendre la sortie prochaine de WordPress 3.0. D&#8217;ailleurs, à ce propos, je vous propose de lire l&#8217;article <a href="http://www.wordpress-fr.net/blog/les-menus-lintegration-de-mu-et-une-course-aux-correctifs">Les menus, l’intégration de MU, et une course aux correctifs !</a> de Xavier Borderie sur <a href="http://www.wordpress-fr.net/blog/">WordPress Francophone</a> qui parle notamment de l&#8217;intégration prochaine d&#8217;une fonctionnalités permettant de faire des menus en veux-tu en voilà !</p>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/le-petit-journal-du-web-novembre-2011' title='Le petit journal du web &#8212; WordPress, développement web, etc.'>Le petit journal du web &#8212; WordPress, développement web, etc.</a></li><li><a href='http://css4design.com/liens-javascript-jquery' title='390 ressources Javascript &amp; jQuery'>390 ressources Javascript &#038; jQuery</a></li><li><a href='http://css4design.com/petit-journal-du-web-septembre-2011' title='Le Petit Journal du Web &#8212; 09/2011'>Le Petit Journal du Web &#8212; 09/2011</a></li><li><a href='http://css4design.com/creation-de-site-wordpress-de-a-a-z-b-comme-basics' title='Création de site WordPress de A à Z &#8212; B comme Basics'>Création de site WordPress de A à Z &#8212; B comme Basics</a></li><li><a href='http://css4design.com/wordpress-a-z-allons-y' title='WordPress de A à Z &#8212; A comme Allons-y ! (on s&#8217;organise)'>WordPress de A à Z &#8212; A comme Allons-y ! (on s&#8217;organise)</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=5410&amp;md5=cc45ffbd46d637ec2885f42ae368df75" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/wordpress-menu-funky-avec-wp_list_bookmarks/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=5410&amp;md5=cc45ffbd46d637ec2885f42ae368df75" type="text/html" />
	</item>
		<item>
		<title>Pluxml &#8212; un mini CMS sans base de données</title>
		<link>http://css4design.com/pluxml-un-mini-cms-sans-base-de-donnees</link>
		<comments>http://css4design.com/pluxml-un-mini-cms-sans-base-de-donnees#comments</comments>
		<pubDate>Sat, 02 Jan 2010 10:51:54 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[Pluxml]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Système de gestion de contenu (CMS)]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Thème]]></category>

		<guid isPermaLink="false">http://css4design.com/?p=4715</guid>
		<description><![CDATA[Après 3 ans d&#8217;existence, Pluxml vient de passer en version stable. J&#8217;ai eu l&#8217;occasion de l&#8217;utiliser à ses débuts sur un projet et j&#8217;en avait été satisfait. Vous y trouverez l&#8217;essentiel : gestion des catégories, pagination, flux de syndication RSS et Atom, gestion des commentaires (version blog), gestion des images et documents liés. Pluxml a la particularité d&#8217;utiliser des fichiers XML pour le stockage des données. Son point fort est la simplicité d&#8217;installation et la légèreté. Un CMS léger et efficace Pour l&#8217;installer, un identifiant et un mot de passe suffisent. Quant à l&#8217;empreinte sur le serveur, elle est très légère : [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fpluxml-un-mini-cms-sans-base-de-donnees">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fpluxml-un-mini-cms-sans-base-de-donnees&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>Après 3 ans d&#8217;existence, <a href="http://pluxml.org/">Pluxml</a> vient de passer en version stable. J&#8217;ai eu l&#8217;occasion de l&#8217;utiliser à ses débuts sur un projet et j&#8217;en avait été satisfait. Vous y trouverez l&#8217;essentiel : gestion des catégories, pagination, flux de syndication RSS et Atom, gestion des commentaires (version blog), gestion des images et documents liés. <a href="http://pluxml.org/">Pluxml</a> a la particularité d&#8217;utiliser des fichiers XML pour le stockage des données. Son point fort est la simplicité d&#8217;installation et la légèreté.<span id="more-4715"></span></p>

<h2>Un CMS léger et efficace</h2>

<p>Pour l&#8217;installer, un identifiant et un mot de passe suffisent. Quant à l&#8217;empreinte sur le serveur, elle est très légère : après décompression, l&#8217;ensemble des fichiers occupe 350 Ko. Pour ce poids vous aurez quand même droit aux thèmes <em>defaut</em> et <em>defaut.mobile</em> situés dans le répertoire <em>themes</em> dont la composition des fichiers vous semblera familière si vous utilisez WordPress. Le système de templates est très clair et le thème par défaut est un bon départ (valide XHTML 1.0 Strict) pour vos créations personnelles.</p>

<h2>Un écosystème complet</h2>

<p>Ceux qui utilisent un CMS au quotidien le savent bien : rien ne remplace une forte communauté pour avoir des ressources et une documentation mises à jour. C&#8217;est le cas avec Pluxml :</p>

<ul>
    <li>Wiki pour la <a href="http://wiki.pluxml.org/">documentation</a>,</li>
    <li><a href="http://ressources.pluxml.org/">Centre de ressources</a> regroupant pas moins de 63 thèmes Pluxml,</li>
    <li><a href="http://forum.pluxml.org/">Forum</a> avec plusieurs milliers de messages.</li>
</ul>

<h2>Pour qui pour quoi ?</h2>

<p>Pluxml est idéal pour la mise en place d&#8217;un site vitrine ou d&#8217;un blog si vous voulez offrir à vos visiteurs une expérience de rapidité dans l&#8217;affichage des pages. En effet, la sobriété du système de <em>template</em> et l&#8217;absence de base de données fera de votre blog sous Pluxml l&#8217;un des plus rapide de la blogosphère !</p>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu' title='Danse avec les loops #1 : un thème WordPress mis à nu'>Danse avec les loops #1 : un thème WordPress mis à nu</a></li><li><a href='http://css4design.com/les-widgets-dans-wordpress-25-avec-widgetisator' title='Les widgets dans WordPress 2.5 avec widgétisator ;)'>Les widgets dans WordPress 2.5 avec widgétisator ;)</a></li><li><a href='http://css4design.com/le-petit-journal-du-web-novembre-2011' title='Le petit journal du web &#8212; WordPress, développement web, etc.'>Le petit journal du web &#8212; WordPress, développement web, etc.</a></li><li><a href='http://css4design.com/wordpress-a-z-allons-y' title='WordPress de A à Z &#8212; A comme Allons-y ! (on s&#8217;organise)'>WordPress de A à Z &#8212; A comme Allons-y ! (on s&#8217;organise)</a></li><li><a href='http://css4design.com/creer-son-site-web-avec-wordpress-de-a-a-z-avec-le-codex' title='Créer son site web avec WordPress de A à Z&#8230; avec le Codex'>Créer son site web avec WordPress de A à Z&#8230; avec le Codex</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=4715&amp;md5=f6f5457b91468366239c19e923fe7f65" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/pluxml-un-mini-cms-sans-base-de-donnees/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=4715&amp;md5=f6f5457b91468366239c19e923fe7f65" type="text/html" />
	</item>
		<item>
		<title>WordPress &#8212; Un blog version &#171;mobile&#187; sans plugin</title>
		<link>http://css4design.com/wordpress-version-mobile-de-votre-blog-sans-plugin</link>
		<comments>http://css4design.com/wordpress-version-mobile-de-votre-blog-sans-plugin#comments</comments>
		<pubDate>Tue, 02 Sep 2008 07:45:47 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Mizukara (3615 MyLife)]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Boucle]]></category>
		<category><![CDATA[eeepc]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[portable]]></category>
		<category><![CDATA[Template]]></category>

		<guid isPermaLink="false">http://www.css4design.com/?p=1578</guid>
		<description><![CDATA[Avec la réduction des tailles d&#8217;écrans qui va des téléphones portables aux ultra-portables comme l&#8217;eeePc, il devient urgent de proposer aux visiteurs une version mobile de votre blog. Il existe de nombreux plugins pour WordPress permettant d&#8217;obtenir une version mobile ou une version iPhone, mais je me suis amusé à chercher une solution minimaliste pour afficher mes derniers articles sans fioriture. J&#8217;ai écarté la mise en place d&#8217;un style switcher pour changer la feuille de style CSS standard par une CSS spécifique aux mobiles ; difficile dans ce cas de partager une URL de type http://mobile.css4design.com ! Sans compter la [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fwordpress-version-mobile-de-votre-blog-sans-plugin">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fwordpress-version-mobile-de-votre-blog-sans-plugin&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>Avec la réduction des tailles d&#8217;écrans qui va des téléphones portables aux ultra-portables comme l&#8217;<a href="http://www.blogeee.net/">eeePc</a>, il devient urgent de proposer aux visiteurs une version mobile de votre blog. Il existe de nombreux <a href="http://wordpress.org/extend/plugins/tags/mobile">plugins pour WordPress</a> permettant d&#8217;obtenir une version mobile ou une version iPhone, mais je me suis amusé à chercher une solution minimaliste pour afficher <a href="http://mobile.css4design.com">mes derniers articles sans fioriture</a>.<span id="more-1578"></span></p>

<p>J&#8217;ai écarté la mise en place d&#8217;un <a href="http://css.alsacreations.com/Tutoriels-PHP/Faire-un-Style-switcher-changement-d-habillage-en-PHP">style switcher</a> pour changer la feuille de style CSS standard par une CSS spécifique aux mobiles ; difficile dans ce cas de partager une URL de type http://mobile.css4design.com ! Sans compter la reconnaissance des périphériques qui va du format 240 x 320 pixels des téléphones portables aux 800 x 480 pixels des premiers eeePC !</p>

<h3>Créez votre version mobile à partir des modèles de pages WordPress</h3>

<p>Je suis donc partie sur l&#8217;idée d&#8217;utiliser le moins de ressources possible (y compris intellectuelles) et de voir ce qu&#8217;il est possible de faire sans quitter WordPress. La création d&#8217;une nouvelle Page <em>Version mobile</em> basée sur une le <em>Modèle de page</em> <em>mobile.php</em> s&#8217;est imposée :</p>

<ol>
<li><p>Créez votre template mobile :</p>

<pre><code>&lt;?php
    /*
    Template Name: mobile
    */
?&gt;
&lt;html&gt;
    &lt;head&gt;
        &lt;title&gt;&lt;/title&gt;
    &lt;/head&gt;
    &lt;body id="version-mobile"&gt;
    &lt;div&gt;
            &lt;h1&gt;
                css4design | Version mobile du blogzine d'un intégrateur web
            &lt;/h1&gt;
            &lt;?php
                query_posts('showposts=5');
                while (have_posts()) : the_post();
            ?&gt;
        &lt;div&gt;
            &lt;h2&gt;&lt;?php the_title(); ?&gt;&lt;/h2&gt;
            &lt;div&gt;&lt;?php the_content(); ?&gt;&lt;/div&gt;
            &lt;p&gt;Publié le &lt;?php the_time('j F Y') ?&gt; par &lt;?php the_author() ?&gt;.&lt;/p&gt;
            &lt;hr /&gt;
        &lt;/div&gt;
        &lt;?php endwhile; ?&gt;
    &lt;/div&gt;
    &lt;/body&gt;
&lt;/html&gt;
</code></pre></li>
<li><p>Créez ensuite une nouvelle Page (Ecrire -> Page),</p></li>
<li><p>Donnez-lui le titre <em>Version mobile</em>,</p></li>
<li><p>Sélectionnez le modèle de page <em>mobile</em> (Modèle de page -> choix du modèle dans la liste déroulante),</p></li>
<li><p>Enregistrez, c&#8217;est fini.</p></li>
</ol>

<p>Ce <em>template</em> affiche les 5 derniers billets et il suffit de modifier le paramètre <code>showposts="5"</code> pour l&#8217;adapter à vos besoins en gardant à l&#8217;esprit que le poids de votre page fait partie des éléments à surveiller de près pour un affichage optimum sur un téléphone portable notamment.</p>

<p>En savoir plus :  sur la <a href="http://www.css4design.com/wordpress-astuces-pour-afficher-une-page-autonome-avec-wp_list_pages">création d&#8217;un modèle de page</a> et sur les <a href="http://www.css4design.com/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu">boucles WorPress</a>.</p>

<h4>les plus</h4>

<ul>
<li>Basique, permet d&#8217;aller à l&#8217;essentiel : proposer un lien pour afficher les 5 derniers billets sans formatage, donc accessibles depuis n&#8217;importe quel périphérique accédant au web,</li>
<li>Service minimum, rapidité maximum ;)</li>
<li>l&#8217;identifiant dans le <code>body</code> permettra de styler légèrement cette version mobile de votre blog (changer la taille de la police de caractère, gérer les interlignage de texte, etc.)</li>
</ul>

<h4>Les moins</h4>

<ul>
<li>Il s&#8217;agit d&#8217;une page unique qui ne permet pas (d&#8217;après des tests rapides) l&#8217;affichage des commentaires de l&#8217;article,</li>
<li>Les liens internes pointent vers la version standard,</li>
<li>Il ne s&#8217;agit pas d&#8217;une <em>vraie</em> version mobile (manque le <a href="http://en.wikipedia.org/wiki/XHTML_Mobile_Profile">Doctype adapté</a>, code HTML non-valide au regard des possibilité des mobiles, page encore un peu lourde, etc.),</li>
</ul>

<h3>Ressources pour la conception de pages web &laquo;&nbsp;mobiles&nbsp;&raquo;</h3>

<p>Voici quelques liens en relation avec la conception de sites pour mobiles :</p>

<ul>
<li><p><a href="http://ready.mobi/">ready.mobi</a> &#8212; Cet outil de test gratuit évalue la conformité de votre page ou de votre site web au regard des standards et des bonnes pratiques spécifiques à ce secteur d&#8217;activité. Les résultats se présentent sous la forme d&#8217;une note de 1 à 5 et d&#8217;une analyse approfondie de la page pour en évaluer les performances sur un périphérique mobile. Nombreux conseils pour corriger les erreurs.</p></li>
<li><p><a href="http://dev.mobi/">dev.mobi</a> &#8212; Toutes les informations pour développer votre site mobile ready : guide du développeur, outil pour construire votre site rapidement, etc.</p></li>
<li><p><a href="http://www.css4design.com/votre-blog-sur-un-telephone-portable-really-ready">Votre blog sur un téléphone portable, really ready ?</a> &#8212; Présentation détaillée de <a href="http://ready.mobi/">ready.mobi</a> avec l&#8217;analyse de mon blog.</p></li>
<li><p><a href="http://validator.w3.org/mobile/">W3C mobileOK Checker [Beta]</a> &#8212; Make your Web site mobile-friendly! Déclinaison pour mobile du validateur du W3C.</p></li>
<li><p><a href="http://www.xml.com/pub/a/2004/04/14/mobile.html">Developing Wireless Content using XHTML Mobile</a> &#8212; Cet article montre comment créer un document XHTML adapté aux périphériques mobiles : mise en place de l&#8217;environnement de travail et transformation d&#8217;un document XHTML en WML.</p></li>
</ul>

<h3>Peut mieux faire !</h3>

<p>Coluche vous le dirait, cette solution ne promet pas le grand soir, mais juste à manger et à boire ;) Elle s&#8217;inscrit dans une démarche visant à proposer aux lecteurs différentes manières d&#8217;accéder aux articles en complément des flux RSS. N&#8217;hésitez pas à proposer vos idées pour l&#8217;améliorer (notamment pour afficher les commentaires, n&#8217;afficher qu&#8217;un seul article avec pagination pour alléger la page, etc.).</p>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu' title='Danse avec les loops #1 : un thème WordPress mis à nu'>Danse avec les loops #1 : un thème WordPress mis à nu</a></li><li><a href='http://css4design.com/petit-journal-du-web-septembre-2011' title='Le Petit Journal du Web &#8212; 09/2011'>Le Petit Journal du Web &#8212; 09/2011</a></li><li><a href='http://css4design.com/creation-de-site-wordpress-de-a-a-z-b-comme-basics' title='Création de site WordPress de A à Z &#8212; B comme Basics'>Création de site WordPress de A à Z &#8212; B comme Basics</a></li><li><a href='http://css4design.com/wordpress-a-z-allons-y' title='WordPress de A à Z &#8212; A comme Allons-y ! (on s&#8217;organise)'>WordPress de A à Z &#8212; A comme Allons-y ! (on s&#8217;organise)</a></li><li><a href='http://css4design.com/creer-son-site-web-avec-wordpress-de-a-a-z-avec-le-codex' title='Créer son site web avec WordPress de A à Z&#8230; avec le Codex'>Créer son site web avec WordPress de A à Z&#8230; avec le Codex</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=1578&amp;md5=60c423ef57713e756fc4fd1c8abf2deb" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/wordpress-version-mobile-de-votre-blog-sans-plugin/feed</wfw:commentRss>
		<slash:comments>34</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=1578&amp;md5=60c423ef57713e756fc4fd1c8abf2deb" type="text/html" />
	</item>
		<item>
		<title>Danse avec les loops #1 : un thème WordPress mis à nu</title>
		<link>http://css4design.com/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu</link>
		<comments>http://css4design.com/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu#comments</comments>
		<pubDate>Sat, 19 Jul 2008 17:30:23 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Conception de site web]]></category>
		<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[Design & Graphisme]]></category>
		<category><![CDATA[Ergonomie & Accessibilité]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Boucle]]></category>
		<category><![CDATA[Loop]]></category>
		<category><![CDATA[Magazine]]></category>
		<category><![CDATA[Onglets]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Thème]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Widget]]></category>

		<guid isPermaLink="false">http://www.css4design.com/?p=271</guid>
		<description><![CDATA[Après le thème Agrumz et après avoir mis en place un thème provisoire en attendant, voici SquaryBluevie, le nouveau thème bleu et carré (et un peu vert aussi) pour css4design. Il ne s&#8217;agit pas vraiment d&#8217;un thème destiné à transformer ce blog en magazine, mais plutôt d&#8217;en faire un magazine qui ressemble à un blog, nuance, nuance&#8230; Un blogzine ? Oui, oui, c&#8217;est presque ça ! Comme promis, voici donc le premier volet de la série Danse avec les loops pour montrer ce qu&#8217;il y a sous le capot. Une ligne éditoriale moins linéaire Je ne m&#8217;étendrai pas trop sur [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fdanse-avec-les-loops-1-un-theme-wordpress-mis-a-nu">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fdanse-avec-les-loops-1-un-theme-wordpress-mis-a-nu&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p><del>Après le thème <em>Agrumz</em> et après avoir mis en place un thème provisoire en attendant, voici <em>SquaryBluevie</em>, le nouveau thème bleu et carré (et un peu vert aussi) pour css4design.</del> Il ne s&#8217;agit pas vraiment d&#8217;un thème destiné à transformer ce blog en magazine, mais plutôt d&#8217;en faire un magazine qui ressemble à un blog, nuance, nuance&#8230; Un <em>blogzine</em> ? Oui, oui, c&#8217;est presque ça ! Comme promis, voici donc le premier volet de la série <em>Danse avec les loops</em> pour montrer ce qu&#8217;il y a sous le capot. <span id="more-271"></span></p>

<h3>Une ligne éditoriale moins linéaire</h3>

<p>Je ne m&#8217;étendrai pas trop sur les interrogations existentielles qui m&#8217;ont poussé à changer le design et la structure de ce blog. La première chose, c&#8217;est que la succession simple des billets dans l&#8217;ordre chronologique inverse ne correspond plus vraiment à mes aspirations et aux différentes rubriques qui composent ce blog.</p>

<p>En effet, si le coeur de la ligne éditoriale est consacré à la création de site web en général en mettant l&#8217;accent sur les problématiques liées à l&#8217;intégration HTML et CSS et à la structuration des contenus, j&#8217;aborde d&#8217;autres sujets comme le Web 2.0, le e-commerce et il m&#8217;arrive de publier des billets d&#8217;humeur sur l&#8217;actualité du web.</p>

<p>Si ces sujets peuvent très bien s&#8217;accommoder d&#8217;une structure de blog classique, j&#8217;avais envie de mieux distinguer les articles de fond des billets plutôt brefs, tout en mettant en avant mes billets d&#8217;humeur. Le problème du blog &laquo;&nbsp;classique&nbsp;&raquo;, c&#8217;est que les billets disparaissent vite de la page d&#8217;accueil et perdent rapidement en visibilité, même si l&#8217;ami américain Google est là pour les faire remonter à la surface.</p>

<p>Il me fallait donc un système pour conserver une certaine unité dans la liste des articles en rapport avec les thèmes principaux abordés sur le blog tout en autorisant la publication de billets brefs et d&#8217;humeur. Un <em>blogzine</em>, en fait ;)</p>

<p>Voici pour les explications éditoriales. Jetons maintenant un oeil sous le capot !</p>

<h3>Hiérarchie des Templates</h3>

<p>Grâce à <a href="http://wordpress.org/">WordPress</a>, il est possible de construire un thème en utilisant uniquement le fichier <code>index.php</code>. Chaque requête &#8212; le fait de cliquer sur une catégorie, une page d&#8217;archive, le titre d&#8217;un billet, un tag, etc. &#8212; crée un contexte de variables qui pointera vers ce fichier.</p>

<p>Si l&#8217;on veut afficher les contenus différemment sur le billet seul, par exemple, deux solutions s&#8217;offrent à nous : les marqueurs conditionnels (<a href="http://codex.wordpress.org/Conditional_Tags">Conditional Tags</a>) comme <code>is_single()</code> ou la création d&#8217;un fichier <code>single.php</code>.</p>

<p>S&#8217;il s&#8217;agit de modifier une largeur de colonne au passage du billet seul, le marqueur conditionnel suffit. En revanche, si les modifications sont plus profondes, le fichier <code>single.php</code> sera sans doute plus adapté sachant que dans la plupart des cas, la solution passe par un mélange des deux techniques.</p>

<p>La première chose à prendre en compte est le nombre de maquettes dont on dispose pour afficher tous les contextes possibles, même si dans la plupart des cas, il n&#8217;est pas nécessaire de mettre en place tous les <em>Templates</em> possibles.</p>

<p>Pour y voir un peu plus clair, voici une table des correspondances entre les marqueurs, les templates et la hiérarchie qui leur est associée (<a href="http://codex.wordpress.org/Template_Hierarchy">Template Hierarchy</a>) :</p>

<p><a href="http://www.css4design.com/wp-content/uploads/2008/07/hierarchie-templates-wordpress.png"><img class="alignnone size-full wp-image-274" title="hierarchie-templates-wordpress" src="http://www.css4design.com/wp-content/uploads/2008/07/hierarchie-templates-wordpress.png" alt="" width="500" height="370" /></a></p>

<p>Pour <strong>SquaryBluevie</strong> par exemple, je voulais tout faire en utilisant uniquement le fichier <code>index.php</code>, mais bien que cela soit possible, le risque est grand de se mélanger les pinceaux entre la multitude des conditions&#8230;</p>

<p>J&#8217;ai donc ajouté à <code>index.php</code>, les fichiers <code>home.php</code>, <code>page.php</code> et <code>single.php</code>. Le reste étant composé de fichiers inclus de manière conditionnelle ou en fonction du <em>Template</em>. C&#8217;est le cas pour <code>header.php</code>, <code>footer.php</code>, <code>tutoriels.php</code>, <code>sidebar0.php</code>, <code>sidebar1.php</code>, <code>sidebar2.php</code>, etc.</p>

<h3>Un découpage en 7 grandes zones</h3>

<h4><span>1</span> L&#8217;en-tête</h4>

<p>Le fichier <code>header.php</code> est composé de deux grandes parties. La première contient les éléments qui apparaissent sur l&#8217;ensemble du blog. C&#8217;est la partie <em>header</em> :</p>

<ul>
    <li>Sommaire en haut à gauche,</li>
    <li><a href="http://www.wikio.fr/blogs/top">Classement Wikio</a> en haut à droite,</li>
    <li>Texte de présentation de l&#8217;auteur,</li>
    <li>Logo,</li>
    <li>Texte de présentation du blog,</li>
    <li>Liste des pages statiques en dessous.</li>
</ul>

<p>La deuxième partie <em>header2</em> est située juste en dessous :</p>

<ul>
    <li>Photo de l&#8217;auteur,</li>
    <li>Icône du flux RSS,</li>
    <li>Texte situé entre les deux.</li>
</ul>

<p>C&#8217;est ce texte qui affichera un contenu différent selon le contexte :</p>

<ul>
    <li>Dans une catégorie (<code>&lt;?php if ( is_category() ) : ?&gt;</code>), j&#8217;affiche la description de la catégorie</li>
    <li>Dans la page affichant l&#8217;article seul (<code>&lt;?php if ( is_single() ) : ?&gt;</code>), j&#8217;affiche une introduction générale pour les articles,</li>
    <li>Ni dans une page d&#8217;article ni dans une page statique ni dans une catégorie (<code>&lt;?php if ( !is_single() &amp;&amp; !is_page() &amp;&amp; !is_category() ) : ?&gt;</code>), j&#8217;affiche le dernier billet dans la rubrique &laquo;&nbsp;Editorial&nbsp;&raquo;.</li>
</ul>

<p>La description du blog est celle que l&#8217;on renseigne habituellement dans <em>Réglages -&gt; Options générales -&gt; Slogan</em> du panneau d&#8217;administration. L&#8217;appel du texte se faisant avec la fonction <code>&lt;?php bloginfo('description'); ?&gt;</code>. Comme il s&#8217;agit &#8212; avec la présentation de l&#8217;auteur &#8212; d&#8217;une zone de widgets, il est possible de remplacer aisément la description du blog par un texte libre (notamment si la description est trop courte) en utilisant un widget texte.</p>

<p>Ceci est possible grâce à la fonction suivante (voir ce billet consacré à la <a href="http://www.css4design.com/les-widgets-dans-wordpress-25-avec-widgetisator">création de zones widget dans WordPress</a>) :
<pre>&lt;?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('header2') ) : ?&gt;
&lt;div&gt;
    &lt;h2&gt;Description du blog&lt;/h2&gt;
    &lt;div&gt;&lt;?php bloginfo('description'); ?&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;?php endif; ?&gt;</pre>
L&#8217;éditorial regroupe tous les billets appartenant à la catégorie&#8230; &laquo;&nbsp;editorial&nbsp;&raquo; ;) <a href="http://codex.wordpress.org/The_Loop">La boucle WordPress</a> utilisée est la suivante (<a href="http://codex.wordpress.org/The_Loop_in_Action">plus d&#8217;informations sur les boucles</a>) :
<pre>&lt;?php $my_query = new WP_Query('category_name=editorial&amp;showposts=1');
while ($my_query-&gt;have_posts()) : $my_query-&gt;the_post();?&gt;
    Votre boucle ici
&lt;?php endwhile; ?&gt;</pre>
<small>Note : le fait d&#8217;utiliser le nom de la catégorie à la place de son <code>id</code>, permettra de faciliter la mise en place du thème : il suffira de créer la catégorie <em>Editorial</em> au lieu de chercher le numéro identifiant et de mettre les mains dans le code.</small></p>

<p>A l&#8217;affichage d&#8217;une catégorie, cet édito est remplacé par la description de la catégorie idoine. Cette description est accessible dans l&#8217;administration via <em>Gérer -&gt; Catégories -&gt; Description</em>. Le code à utiliser dans le Template est <code>&lt;?php echo category_description(); ?&gt;</code>. Enfin, lorsqu&#8217;on affiche l&#8217;article seul, cette description est remplacée par un texte libre (widget texte).</p>

<h4><span>2</span> Billet &laquo;&nbsp;C&#8217;est vite dit !&nbsp;&raquo; (En bref)</h4>

<p>Sous le <em>header</em>, la deuxième zone se compose d&#8217;un billet &laquo;&nbsp;En bref&nbsp;&raquo; (cet intitulé &#8212; comme d&#8217;autres sur le blog &#8212; est modifiable dans le fichier <em>functions.php</em>) surmonté d&#8217;un visuel optionnel géré par les champs personnalisés (<em>Customs fields</em>).</p>

<p>Cette rubrique n&#8217;est ni plus ni moins que la catégorie 1 (<em>uncategorized</em> à l&#8217;origine) dont j&#8217;ai modifié l&#8217;intitulé. L&#8217;avantage est de pouvoir compter sur l&#8217;identifiant présent dès l&#8217;installation du blog, ce qui évite d&#8217;avoir à mettre les mains dans le code pour masquer cette catégorie dans les autres boucles. Par ailleurs, cette catégorie &laquo;&nbsp;originelle&nbsp;&raquo; est cochée par défaut, ce qui permet de gagner du temps lorsqu&#8217;on veut rédiger un billet court ;)</p>

<p>Note : pour afficher une seule rubrique, il est possible de se servir de son nom, mais pour l&#8217;exclure, il semble nécessaire de passer par l&#8217;identifiant numérique (à moins qu&#8217;une option m&#8217;ait échappée).</p>

<p>Voici le code pour cette boucle :
<pre>&lt;?php if(!is_paged()) : ?&gt;
    &lt;?php $my_query = new WP_Query('cat=1&amp;showposts=1');
    while ($my_query-&gt;have_posts()) : $my_query-&gt;the_post();
    $do_not_duplicate = $post-&gt;ID;?&gt;
        Contenu de la boucle
    &lt;?php endwhile; ?&gt;
&lt;?php endif; ?&gt;&lt;!-- end !is_paged --&gt;</pre>
Notez la variable <code>$do_not_duplicate</code> initialisée avec la valeur de l&#8217;identifiant du billet : comme les anciens articles de cette catégorie se retrouvent plus bas dans la première barre latérale, il sera important de l&#8217;exclure de la prochaine boucle.</p>

<p>Pour cela, en plus d&#8217;initialiser la variable <code>$do_not_duplicate</code> dans la première boucle, il faut exclure le billet en question de la deuxième boucle :
<pre>&lt;?php $my_query = new WP_Query('cat=1&amp;showposts=6'); ?&gt;
&lt;?php while ($my_query-&gt;have_posts()) : $my_query-&gt;the_post();
    if( $post-&gt;ID == $do_not_duplicate ) continue; update_post_caches($posts); ?&gt;
        Contenu de la boucle
&lt;?php endwhile; ?&gt;</pre>
Grâce au mot-clé PHP <code>continue</code>, on saute le billet repéré plus haut en passant directement au suivant. Et hop ! Ce billet est censé s&#8217;afficher sur la <em>Home</em> uniquement et la condition <code>!is_paged()</code> permet de s&#8217;assurer que l&#8217;utilisateur n&#8217;a pas cliqué sur les billets plus anciens, auquel cas ce billet &laquo;&nbsp;En bref&nbsp;&raquo; ne s&#8217;affiche pas. Je pense que l&#8217;on pourrait utiliser la nouvelle condition<code> is_front_page()</code> apparue avec WordPress 2.5 pour obtenir le même résultat.</p>

<p>La fonction <code>update_post_caches()</code> est là pour pallier le fait que certains <em>plugins</em> ne fonctionnent pas correctement lorsque plusieurs boucles sont présentes sur la même page. Cette fonction réinitialise le cache des billets pour éviter d&#8217;éventuels problèmes.</p>

<h4><span>3</span> Les articles du blogzine proprement dit</h4>

<p>Cette zone est suivie de la liste des billets publiés au fil de l&#8217;eau sur le blog à l&#8217;exception de l&#8217;édito et des billets &laquo;&nbsp;En bref&nbsp;&raquo;. Toutefois, je voulais que ces deux rubriques puissent apparaitre lorsque les visiteurs cliquent sur les <em>Articles plus anciens</em> car si la redondance est gênante sur la première page, elle l&#8217;est moins sur les autres :
<pre>&lt;?php if(!is_paged()) : ?&gt;
    &lt;?php query_posts("$query_string&amp;cat=-1,-16&amp;showposts=10");
    /* Affichage des articles sauf featured et édito */?&gt;
&lt;?php else : ?&gt;
    &lt;?php query_posts("$query_string&amp;showposts=15"); ?&gt;
&lt;?php endif; ?&gt;
&lt;?php while (have_posts()) : the_post(); ?&gt;
        Contenu de la boucle
&lt;?php endwhile; ?&gt;</pre>
Comme vous pouvez le constater, j&#8217;en ai profité pour afficher un nombre plus important de billets sur les &laquo;&nbsp;pages suivantes&nbsp;&raquo; grâce au paramètre <code>showposts=15</code> histoire de donner à voir plus d&#8217;articles à chaque fois. Celà n&#8217;est pas indispensable ici, mais si vous envisagez de n&#8217;afficher qu&#8217;un seul article complet sur la <em>Home</em>, ça peut-être très utile.</p>

<p>Il ne faut pas oublier le paramètre <code>$query_string</code> qui permet de recréer le contexte de la requête (ici <code>is_paged()</code> ) car la fonction <code>query_posts()</code> est un peu l&#8217;auberge espagnole : seules les variables précisées en paramètres sont disponibles sur votre page.</p>

<h4><span>4</span> Le menu à onglets sur la droite</h4>

<p>Ce pavé inaugure la barre latérale et est en quelque sorte le pivot du blog, la boussole qui sert de point de repère dans ce qui pourrait apparaitre comme une cacophonie de textes :</p>

<ul>
    <li><strong>Catégories</strong> &#8212; le moins mauvais des systèmes pour se repérer dans un blog ;</li>
    <li><strong>Derniers articles publiés</strong> afin que le lecteur ait une vision &laquo;&nbsp;applatie&nbsp;&raquo; des parutions sur le blog. En effet, l&#8217;édito ou le billet &laquo;&nbsp;En bref&nbsp;&raquo; peuvent rester un certain temps avant d&#8217;être remplacés, même si le contenu du blog proprement dit (la quatrième zone) peut évoluer plus rapidement ; à moins que l&#8217;inverse se produise car il est tout à fait possible de publier plusieurs billets courts dans &laquo;&nbsp;En bref&nbsp;&raquo; ou de prendre un coup de sang quotidien avec l&#8217;édito !</li>
    <li><strong>Articles les plus commentés</strong>. Si les derniers commentaires (voir plus bas) permettent aux visiteurs de se faire une idée sur les dernières discussions en cours, la liste des articles les plus commentés permet de faire remonter certains articles anciens qui ont, en leur temps, fais parler d&#8217;eux ;)</li>
    <li><strong>Derniers commentaires</strong> avec le gravatar, l&#8217;URL du commentateur et l&#8217;adresse du billet commenté. Pratique, pour donner au visiteur un aperçu des sujets qui suscitent actuellement le plus d&#8217;intérêt.</li>
    <li><strong>Nuage de tags</strong> pour donner un aperçu des thèmes abordés sur le blog au visiteur de passage (qui représente quand même plus de la moitié des visites).</li>
</ul>

<p>A noter que lorsqu&#8217;on se trouve sur les pages <em>single.php</em> (affichage des billets seuls) et <em>page.php</em> (affichage des pages &laquo;&nbsp;statiques&nbsp;&raquo;), ce menu ne propose que les 3 premiers onglets afin de laisser plus de place pour l&#8217;article. Voici le code :
<pre>&lt;?php if ( !is_single() &amp;&amp; !is_page()) : ?&gt;
    &lt;div id="menu-wide"&gt;
&lt;?php else : ?&gt;
    &lt;div id="menu-narrow"&gt;
&lt;?php endif; ?&gt;</pre></p>

<h4><span>5</span> Tutoriels aléatoires</h4>

<p>Sous le menu à onglets, j&#8217;affiche un article aléatoire parmi ceux qui sont tagués &laquo;&nbsp;tutoriel&nbsp;&raquo;. Ca tombe bien car c&#8217;est un des rares tags que j&#8217;ai employé à bon escient depuis de début ! Ca permet de faire &laquo;&nbsp;remonter&nbsp;&raquo; des billets rédigés il y a plus de deux ans et sur lesquels j&#8217;ai le plus transpiré ;) La boucle est relativement similaire aux autres :
<pre>&lt;?php /* Affichage des tous les billets tagué "tutoriels" */
query_posts('tag=tutoriel&amp;showposts=1&amp;orderby=rand');
while (have_posts()) : the_post(); ?&gt;
    Contenu de votre boucle
&lt;?php endwhile; ?&gt;</pre>
Le nerf de la guerre étant ici, les paramètres <em>tag</em> et <em>orderby</em>. Notez que si l&#8217;on voulait obtenir les billets contenant plusieurs tags il suffirait de préciser : <code>tag=tutoriel+wordpress</code>.</p>

<p>Cette zone peut être précédée ou suivie d&#8217;une zone widgétisable pour placer une éventuelle publicité (actuellement des vidéos virales de unrulymedia) ou tout autre élément à la mode. Une zone est même prévue au-dessus du menu à onglets pour la même chose. Bon, rassurez-vous, une publicité placée au-dessus du menu principal vaut son pesant de cacaouettes : le jour où ça arrive, je vous invite à boire un café sur Lyon :D</p>

<h4><span>6</span> Deux barres latérales pour le prix d&#8217;une !</h4>

<p>C&#8217;est le moment de diviser la barre latérale en deux afin d&#8217;accueillir d&#8217;autres types de contenus. Pour le moment la première <em>sidebar</em> accueille la suite des billets &laquo;&nbsp;En bref&nbsp;&raquo; suivie d&#8217;une petite publicité virale (oui, j&#8217;essaie de trouver des alternative à Google Adsense&#8230; pas si facile non plus ;) )</p>

<p>La deuxième barre latérale est destinée à accueillir des liens externes comme les liens sponsorisés (saymal, mais saybon quand même :D ), les flux RSS externes, etc.</p>

<p>A noter que sous cette double <em>sidebar</em>, il est possible d&#8217;afficher du contenu à l&#8217;aide d&#8217;une zone widgétisée sur la largeur des deux colonnes.</p>

<h4><span>7</span> Le footer</h4>

<p>Ce footer est lui-même divisé en deux : un <em>big footer</em> (inactif pour l&#8217;instant) et le <em>footer</em> proprement dit qui affiche quelques informations classiques comme les droits réservés, l&#8217;adresse des différents flux RSS, le lien vers le formulaire de contact, etc.</p>

<h3>Les widgets</h3>

<p>Ce thème est truffé de <a href="http://www.css4design.com/tutoriel-wordpress-2-2-la-sidebar-a-la-loupe-comprendre-les-widgets-et-declarer-une-war">zones widgets ready</a> pour permettre une certaine souplesse dans l&#8217;administration du blog en minimisant les allers-retours dans le code. Pour information, <em>SquaryBluevie </em>ne compte pas moins de de 19 zones de widgets, certaines actives et d&#8217;autres pouvant être activées sur un claquement de souris.</p>

<p>Voici la liste des différentes zones de widget et leur utilisation actuelle ou prochaine :</p>

<ol>
    <li><strong>header1 </strong>&#8211; présentation de l&#8217;auteur (widget Texte),</li>
    <li><strong>header2 </strong>&#8211; présentation du blog (inactive pour l&#8217;instant),</li>
    <li><strong>article </strong>&#8211; texte de remplacement de l&#8217;édito et de la description de la catégorie quand on est sur l&#8217;article seul,</li>
    <li><strong>tab1</strong> &#8212; contenu du premier onglet dans le pavé de droite. Actuellement les catégories,</li>
    <li><strong>tab2</strong> &#8212; derniers billets publiés,</li>
    <li><strong>tab3</strong> &#8212; articles les plus commentés par les visiteurs,</li>
    <li><strong>tab4</strong> &#8212; derniers commentaires des visiteurs</li>
    <li><strong>tab5</strong> &#8212; listes des tags les plus utilisés</li>
    <li><strong>sidebar-top</strong> &#8212; zone située au-dessus du menu à onglets (inactive pour l&#8217;instant),</li>
    <li><strong>sidebar-middle</strong> &#8212; zone située sous le menu à onglets (Actuellement une vidéo publicitaire),</li>
    <li><strong>sidebar-middle2</strong> &#8212; zone située sous le tutoriel aléatoire (inactive pour l&#8217;instant),</li>
    <li><strong>sidebars-bottom</strong> &#8211;zone située sous les deux  colonnes latérales,</li>
    <li><strong>sidebar1-top</strong> &#8212; zone placée au-dessus de la première barre latérale étroite,</li>
    <li><strong>sidebar1-bottom</strong> &#8212; zone placée en dessous,</li>
    <li><strong>sidebar2</strong> &#8212; l&#8217;ensemble de la deuxième barre latérale étroite est gérée par cette zone. Principalement pour des liens externes et/ou publicitaires (flux RSS, liens sponsorisés, <em>blogroll</em>, etc.),</li>
    <li><strong>bigfooter </strong>&#8211; si le besoin s&#8217;en fait sentir, une zone <em>big footer</em> est diponible sur toute la largeur de la page en 2, 3, 4 ou 5 colonnes en fonction des besoins. (inactive pour l&#8217;instant),</li>
    <li><strong>footer </strong>&#8211; zone disponible au début du <em>footer</em> (inactive pour l&#8217;instant),</li>
    <li><strong>adz</strong> &#8212; affichage des publicités <em>AdSense</em> à la fin du billet seul et sous le billet &laquo;&nbsp;En bref&nbsp;&raquo; présent sur la Home.</li>
    <li><strong>sidebar-single </strong>&#8211; permet d&#8217;afficher des élément sous le menu à onglets lorsqu&#8217;on lit un billet seul.</li>
</ol>

<h3>Grille de mise en page, feuilles de styles CSS et Javascript</h3>

<p>Je ne m&#8217;étendrai pas trop sur ces questions qui feront l&#8217;objet d&#8217;un autre article : ce design est provisoire (ce qui n&#8217;est pas le cas de cet article) et je ne suis pas sûr de vouloir garder la même approche. Mais pour ceux qui sont curieux et qui n&#8217;ont pas envie de regarder le code source, voici quelques informations.</p>

<p>Pour ce thème, j&#8217;ai utilisé le <a href="http://www.css4design.com/frameworks-css-reset-css-design-from-scratch">framework CSS</a> <a href="http://code.google.com/p/blueprintcss/">Blueprint</a> en redéfinissant totalement la grille horizontale proposée par défaut en utilisant l&#8217;excellent <a href="http://kematzy.com/blueprint-generator/">Blueprint Generator</a> pour générer automatiquement le fichier <em>grids.css</em> : il suffit de préciser quelques informations. J&#8217;ai opté pour une grille en 14 colonnes de 52 pixels chacune, séparées par une gouttière de 18 pixels, pour une largeur totale de 962 pixels.</p>

<p>L&#8217;avantage du framework Blueprint est de pouvoir tester rapidement plusieurs mises en page à partir de la même grille. La prise en main est relativement facile si l&#8217;on possède des bonnes notions de CSS et si l&#8217;on si sait à quel moment il faut <a href="http://www.css4design.com/retablir-le-flux-apres-des-elements-flottants-en-css-sans-balise-html-supplementaire">rétablir le flux après les flottants</a> : lorsqu&#8217;on détermine une largeur à l&#8217;aide de Blueprint, on utilise un <em>float: left</em> en même temps !</p>

<p>J&#8217;ai utilisé également le<a href="http://code.google.com/p/ie7-js/"> script ie7.js</a> de <a href="http://dean.edwards.name/">Dean Edwards</a> pour faire en sorte que Internet Explorer 6 se comporte comme IE7. Je vous invite à lire l&#8217;article <a href="http://www.css4design.com/quelques-notes-sur-la-bibliotheque-javascript-ie7-de-dean-edwards">Quelques notes sur la bibliothèque Javascript IE7</a> qui vous permettra d&#8217;en savoir plus sur les comportements ajoutés à Internet Explorer pour le rendre plus <em>friendly</em> ;)</p>

<h3>Conclusion</h3>

<p>Dans ce billet, je n&#8217;ai pas abordé les aspects graphiques : comme je l&#8217;ai <a href="http://www.css4design.com/nouveau-design-en-place-plus-bleu-plus-carre-plus-centre">déjà évoqué</a>, ce thème est pour moi un saut dans l&#8217;inconnu car je n&#8217;ai pas l&#8217;habitude de travailler le bleu, les blocs carrés ou encore les designs symétriques ! Tout celà donne un aspect institutionnel qui n&#8217;était pas recherché au départ mais qui peut faire son petit effet ;)</p>

<p>Rassurez-vous toutefois, mon objectif n&#8217;était pas d&#8217;obtenir des <em>backlinks</em> d&#8217;un site se terminant par <em>.gouv</em>, mais simplement de mieux structurer le blog et d&#8217;utiliser une palette de couleur tendant vers la monochromie (deux couleurs froides) afin que le regard du lecteur ne se disperse pas trop : plus les contenus sont nombreux et variés et plus la sobriété est importante.</p>

<p>Par ailleurs, le graphisme de ce blog est destiné à évoluer régulièrement pendant quelques temps, le temps de trouver un rythme de croisière entre l&#8217;édito, les brèves, les articles de fond, les tutoriels, etc&#8230;</p>

<p><em>Stay tuned and mind the gap!</em></p>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/wordpress-gerer-les-images-avec-les-champs-personnalises-customs-fields' title='WordPress &#8212; Gérer les images avec les champs personnalisés (Customs fields)'>WordPress &#8212; Gérer les images avec les champs personnalisés (Customs fields)</a></li><li><a href='http://css4design.com/wordpress-26-mes-news-carburent-a-press-this' title='WordPress 2.6 &#8212; Mes news carburent à &quot;Press This&quot; (chaine inside)'>WordPress 2.6 &#8212; Mes news carburent à &quot;Press This&quot; (chaine inside)</a></li><li><a href='http://css4design.com/les-widgets-dans-wordpress-25-avec-widgetisator' title='Les widgets dans WordPress 2.5 avec widgétisator ;)'>Les widgets dans WordPress 2.5 avec widgétisator ;)</a></li><li><a href='http://css4design.com/wordpress-26-un-nouveau-tag-conditionnel-avec-has_tag' title='WordPress 2.6 &#8212; un nouveau &quot;tag&quot; conditionnel avec has_tag()'>WordPress 2.6 &#8212; un nouveau &quot;tag&quot; conditionnel avec has_tag()</a></li><li><a href='http://css4design.com/quelques-notes-sur-un-theme-magazine-de-a-a-z-e-comme-epure' title='Quelques notes sur un thème magazine de A à Z &#8212; E comme épure'>Quelques notes sur un thème magazine de A à Z &#8212; E comme épure</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=271&amp;md5=6e5619743e48633dcaa7d93ca32f8145" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=271&amp;md5=6e5619743e48633dcaa7d93ca32f8145" type="text/html" />
	</item>
		<item>
		<title>Les widgets dans WordPress 2.5 avec widgétisator ;)</title>
		<link>http://css4design.com/les-widgets-dans-wordpress-25-avec-widgetisator</link>
		<comments>http://css4design.com/les-widgets-dans-wordpress-25-avec-widgetisator#comments</comments>
		<pubDate>Thu, 20 Mar 2008 22:29:38 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Sidebar]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Thème]]></category>
		<category><![CDATA[Widget]]></category>

		<guid isPermaLink="false">http://www.css4design.com/les-widgets-dans-wordpress-25-avec-widgetisator</guid>
		<description><![CDATA[La mise-à-jour vers WordPress 2.5 ne se limite pas seulement à des améliorations ergonomiques et cosmétiques au niveau de l&#8217;interface d&#8217;administration. Prenons les widgets : la page elle-même est profondément remaniée, et toute la partie destinée au choix du nombre de widgets (texte, RSS, catégorie, etc.) disparait, puisque avec cette version, le nombre de certains widgets n&#8217;est plus limité. Et comme vous êtes sympa, je vous donne les éléments nécessaires pour nommer et personnaliser vos zones widgétisables dans votre template WordPress. L&#8217;est passé où, le glissé-déposé ? Conséquence directe sur l&#8217;interface, il n&#8217;est plus possible d&#8217;utiliser le glissé-déposé des widgets [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 18px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fcss4design.com%2Fles-widgets-dans-wordpress-25-avec-widgetisator">
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fcss4design.com%2Fles-widgets-dans-wordpress-25-avec-widgetisator&amp;source=br1o&amp;style=normal&amp;service=bit.ly&amp;service_api=R_0c1ee4b64f105d1b2672690740a77d6a&amp;b=2" height="61" width="50" />
			</a>
		</div><p>La mise-à-jour vers WordPress 2.5 ne se limite pas seulement à des améliorations ergonomiques et cosmétiques au niveau de l&#8217;interface d&#8217;administration. Prenons les widgets : la page elle-même est profondément remaniée, et toute la partie destinée au choix du nombre de widgets (texte, RSS, catégorie, etc.) disparait, puisque avec cette version, le nombre de certains widgets n&#8217;est plus limité. Et comme vous êtes sympa, je vous donne les éléments nécessaires pour nommer et personnaliser vos zones widgétisables dans votre template WordPress.<span id="more-214"></span></p>

<h3>L&#8217;est passé où, le glissé-déposé ?</h3>

<p>Conséquence directe sur l&#8217;interface, il n&#8217;est plus possible d&#8217;utiliser le glissé-déposé des widgets vers les différentes &laquo;&nbsp;sidebars&nbsp;&raquo;. En effet, cette fonction n&#8217;était déjà pas très pratique lorsqu&#8217;on déclarait quatre zones widgétisables (improprement appelées &laquo;&nbsp;sidebars&nbsp;&raquo;), alors vous imaginez le dawa avec plus  ;)</p>

<p>A la place, nous avons une interface robuste avec à gauche, les différents widgets disponibles, et à droite, les zones widgétisables et les widgets associés, avec les options disponibles pour chacun d&#8217;eux.</p>

<p>A noter qu&#8217;il est préférable de bien nommer vos zones widgétisables pour vous y retrouver car le choix de ces dernières s&#8217;effectue désormais au dans un menu <em>select</em>.</p>

<h3>Modifier l&#8217;intitulé des zones widgétisables</h3>

<p>Dans un précédent article sur <a href="http://www.css4design.com/tutoriel-wordpress-2-2-la-sidebar-a-la-loupe-comprendre-les-widgets-et-declarer-une-war">les widgets dans WordPress</a>, je n&#8217;étais pas parvenu à modifier l&#8217;intitulé des zones widgétisables, cette fois, c&#8217;est réglé : à la place de <em>sidebar1</em>, <em>sidebar2</em>, etc. voici le code à mettre dans le fichier <em>functions.php</em> pour donner un nom explicite à chaque zone, avec en prime, la possibilité de spécifier pour chacune les balises HTML enveloppantes qui vont bien :</p>

<h4>Widgétisator</h4>

<p><pre>
&lt;?php
// <strong>A mettre dans le fichier functions.php de votre thème</strong>
if ( function_exists('register_sidebar') )
register_sidebar(array('name'=&gt;'header',
'before_widget' =&gt; '&lt;p id=&quot;%1$s&quot; class=&quot;widget-header %2$s&quot;&gt;',
'after_widget' =&gt; '&lt;/p&gt;',
'before_title' =&gt; '&lt;h3 class=&quot;widgettitle&quot;&gt;',
'after_title' =&gt; '&lt;/h3&gt;',
));
register_sidebar(array('name'=&gt;'sidebar',
'before_widget' =&gt; '&lt;li id=&quot;%1$s&quot; class=&quot;widget-sidebar %2$s&quot;&gt;',
'after_widget' =&gt; '&lt;/li&gt;',
'before_title' =&gt; '&lt;h3 class=&quot;widgettitle&quot;&gt;',
'after_title' =&gt; '&lt;/h3&gt;',
));
register_sidebar(array('name'=&gt;'content',
'before_widget' =&gt; '&lt;div id=&quot;%1$s&quot; class=&quot;widget-content %2$s&quot;&gt;',
'after_widget' =&gt; '&lt;/div&gt;',
'before_title' =&gt; '&lt;h3 class=&quot;widgettitle&quot;&gt;',
'after_title' =&gt; '&lt;/h3&gt;',
));
register_sidebar(array('name'=&gt;'footer',
'before_widget' =&gt; '&lt;div id=&quot;%1$s&quot; class=&quot;widget-footer %2$s&quot;&gt;',
'after_widget' =&gt; '&lt;/div&gt;',
'before_title' =&gt; '&lt;h3 class=&quot;widgettitle&quot;&gt;',
'after_title' =&gt; '&lt;/h3&gt;',
));
?&gt;
</pre></p>

<p>L&#8217;idée est de déclarer individuellement chaque zone, de manière à controler :</p>

<ul>
    <li>le nom de la zone (<em>header</em>, <em>sidebar</em>, <em>content</em>, <em>footer</em>), </li>
    <li>la balise html servant à encadrer le code fournit par le widget avec une class CSS spécifique (<em>widget-header</em>, <em>widget-sidebar</em>, <em>widget-content</em>, <em>widget-footer</em>), </li>
    <li>la balise de titre avec sa classe CSS spécifique (<em>widgettitle</em>). </li>
</ul>

<p>Sinon, il reste toujours la possibilité de déclarer plusieurs zones d&#8217;un seul coup avec le code :</p>

<p><pre>
&lt;?php
if ( function_exists('register_sidebar') )
    $widgetWrap = array(
        'before_widget' =&gt; '&lt;div id=&quot;%1$s&quot; class=&quot;widget %2$s&quot;&gt;',
        'after_widget' =&gt; '&lt;/div&gt;',
        'before_title' =&gt; '&lt;h2 class=&quot;widgettitle&quot;&gt;',
        'after_title' =&gt; '&lt;/h2&gt;',
    );
    register_sidebars(4, $widgetWrap);
?&gt;
</pre></p>

<p>Dans les deux cas, pour terminer, il est nécessaire de définir votre zone widgétisable dans votre template à l&#8217;aide des lignes suivantes :</p>

<p><pre>
&lt;?php
// <strong>A mettre dans votre template là où vous voulez déclarer une WAR</strong>
if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('header') ) : ?&gt;</p>

<p>/*
Placez ici le code qui doit s'afficher si la zone
n'est pas remplie avec des widgets -- facultatif
*/</p>

<p>&lt;?php endif; ?&gt;
</pre></p>

<h3>En bref</h3>

<p>Vous l&#8217;aurez compris, je suis conquis par cette nouvelle version de WordPress, et vous n&#8217;avez pas fini d&#8217;en entendre parler ;) Pour avoir d&#8217;autres informations sur cette version, n&#8217;h&#233;sitez pas &#224; faire un tour sur <a href="http://www.wordpress-fr.net/dans-les-coulisses-de-wordpress-25-sneak-peek">WordPress francophone</a>, chez <a href="http://blog.nicolargo.com/2008/03/adapter-votre-theme-pour-wordpress-25-1.html">nicolargo</a> ou encore chez <a href="http://www.herewithme.fr/les-nouveauts-dveloppeurs-de-wordpress-25">Here With Me</a>.</p>

<p><em>Stay tuned!</em></p>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css4design.com/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu' title='Danse avec les loops #1 : un thème WordPress mis à nu'>Danse avec les loops #1 : un thème WordPress mis à nu</a></li><li><a href='http://css4design.com/tutoriel-wordpress-2-2-la-sidebar-a-la-loupe-comprendre-les-widgets-et-declarer-une-war' title='Tutoriel WordPress : la sidebar à la loupe, comprendre les widgets et déclarer une &quot;WAR&quot;'>Tutoriel WordPress : la sidebar à la loupe, comprendre les widgets et déclarer une &quot;WAR&quot;</a></li><li><a href='http://css4design.com/wordpress-a-z-allons-y' title='WordPress de A à Z &#8212; A comme Allons-y ! (on s&#8217;organise)'>WordPress de A à Z &#8212; A comme Allons-y ! (on s&#8217;organise)</a></li><li><a href='http://css4design.com/creer-son-site-web-avec-wordpress-de-a-a-z-avec-le-codex' title='Créer son site web avec WordPress de A à Z&#8230; avec le Codex'>Créer son site web avec WordPress de A à Z&#8230; avec le Codex</a></li><li><a href='http://css4design.com/quel-tarif-pour-un-theme-wordpress' title='Quel tarif pour un thème WordPress ?'>Quel tarif pour un thème WordPress ?</a></li></ul>
 <p><a href="http://css4design.com/?flattrss_redirect&amp;id=214&amp;md5=b9f47d90498f9781d2e7d12c2b1406dd" title="Flattr" target="_blank"><img src="http://css4design.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css4design.com/les-widgets-dans-wordpress-25-avec-widgetisator/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<atom:link rel="payment" href="http://css4design.com/?flattrss_redirect&amp;id=214&amp;md5=b9f47d90498f9781d2e7d12c2b1406dd" type="text/html" />
	</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced (User agent is rejected)

Served from: css4design.com @ 2012-02-08 11:35:33 -->
