<?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>Here With Me &#187; Widgets</title>
	<atom:link href="http://www.herewithme.fr/tag/widgets/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.herewithme.fr</link>
	<description>Blog personnel et technique, Blog technique et personnel, Blog avant tout.</description>
	<lastBuildDate>Sat, 24 Jul 2010 15:53:13 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Une barre de sidebar automatique par page et une sidebar par défaut !</title>
		<link>http://www.herewithme.fr/2009/12/30/barre-sidebar-automatique-par-page-sidebar-par-defaut/</link>
		<comments>http://www.herewithme.fr/2009/12/30/barre-sidebar-automatique-par-page-sidebar-par-defaut/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 08:04:38 +0000</pubDate>
		<dc:creator>Amaury</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Thèmes]]></category>
		<category><![CDATA[Widgets]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.herewithme.fr/?p=803</guid>
		<description><![CDATA[Les widgets, bien qu'améliorer depuis WordPress 2.8 (avec la nouvelle classe PHP et la multiplicité de ces derniers), sont toujours une source de frustration pour les utilisateurs. Par exemple, n'ajouter un widget que sur une certaine page reste encore mission impossible ou presque ! Ici, je vais vous montrer avec 2 bouts de code, comment [...]]]></description>
			<content:encoded><![CDATA[<p>Les <a href="http://www.herewithme.fr/tag/widgets/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widgets">widgets</a>, bien qu'améliorer depuis <a href="http://www.herewithme.fr/tag/wordpress/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with WordPress">WordPress</a> 2.8 (avec la nouvelle classe PHP et la multiplicité de ces derniers), sont toujours une source de frustration pour les utilisateurs.<br />
Par exemple, n'ajouter un widget que sur une certaine page reste encore mission impossible ou presque !</p>
<p>Ici, je vais vous montrer avec 2 bouts de code, comment on peut générer automatiquement une barre de sidebar pour chaque page de votre blog/site sous <a href="http://www.herewithme.fr/tag/wordpress/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with WordPress">WordPress</a>, sans oublier une sidebar par défaut pour le reste du blog et les pages n'ayant aucun widget spécifique !</p>
<h3>Étape 1 : Enregistrement automatique des nouvelles sidebars</h3>
<p>Ici, on procède en 2 étapes,dans un premier temps on enregistre la sidebar par défaut, puis on récupère la liste complète des pages disponibles de votre blog via la fonction get_pages() et on fait une boucle dessus pour enregistrer chaque sidebar.</p>
<pre lang="php">&lt;?php
if ( function_exists('register_sidebar') ) {
 // Default sidebar
 register_sidebar(array(
 'id' =&gt; "sidebar-default",
 'name' =&gt; 'Sidebar par défaut',
 'before_widget' =&gt; '&lt;li id="%1$s"&gt;',
 'after_widget' =&gt; '&lt;/div&gt;&lt;/li&gt;',
 'before_title' =&gt; '&lt;h2&gt;',
 'after_title' =&gt; '&lt;/h2&gt;&lt;div&gt;',
 ));

 // One sidebar by page
 $_pages = get_pages();
 foreach( (array) $_pages as $_page ) {
 register_sidebar(array(
 'id' =&gt; "sidebar-$_page-&gt;ID",
 'name' =&gt; esc_html($_page-&gt;post_title),
 'before_widget' =&gt; '&lt;li id="%1$s"&gt;',
 'after_widget' =&gt; '&lt;/div&gt;&lt;/li&gt;',
 'before_title' =&gt; '&lt;h2&gt;',
 'after_title' =&gt; '&lt;/h2&gt;&lt;div&gt;',
 ));
 }
 unset($_pages, $_page);
 wp_reset_query();
}
?&gt;</pre>
<h3>Étape 2 : Appel de la sidebar depuis votre thème</h3>
<p><em>(Code généralement à placer dans le fichier sidebar.php de votre thème)</em></p>
<p>Ici il ne faut pas oublier d'ajouter la variable globale $wp_query, grâce à cette dernière nous récupérons l'ID de l'objet actuellement chargé, et je vérifie que je suis bien sur une page et que la sidebar est utilisée. (autrement dit qu'elle contient au moins un widget). Si ça n'est pas le cas, je charge la sidebar par défaut.</p>
<pre lang="php">&lt;?php
global $wp_query;
if ( function_exists('dynamic_sidebar') ) {
 if ( is_page() &amp;&amp; is_active_sidebar( 'sidebar-' . $wp_query-&gt;queried_object_id ) ) {
 dynamic_sidebar( 'sidebar-' . $wp_query-&gt;queried_object_id );
 }  else {
 dynamic_sidebar( 'sidebar-default' );
 }
}
?&gt;</pre>
<p>Vous pouvez retrouver l'intégralité du code depuis <a href="http://wordpress-fr.pastebin.com/f6b83552">cette page pastebin</a></p>

	Tags: <a href="http://www.herewithme.fr/tag/developpement/" title="Développement" rel="tag nofollow">Développement</a>, <a href="http://www.herewithme.fr/tag/themes/" title="Thèmes" rel="tag nofollow">Thèmes</a>, <a href="http://www.herewithme.fr/tag/widgets/" title="Widgets" rel="tag nofollow">Widgets</a>, <a href="http://www.herewithme.fr/tag/wordpress/" title="WordPress" rel="tag nofollow">WordPress</a><br />

	<h4>Articles relatifs</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.herewithme.fr/2007/01/16/wordpressmu-copie-revoir/" title="WordPressMu : Copie &agrave; revoir&#8230; (16 janvier 2007)">WordPressMu : Copie &agrave; revoir&#8230;</a> (9)</li>
	<li><a href="http://www.herewithme.fr/2007/04/16/wordpress-mu-dans-le-cadre-dun-projet-professionnel/" title="WordPress Mu dans le cadre d&#8217;un projet professionnel (16 avril 2007)">WordPress Mu dans le cadre d&#8217;un projet professionnel</a> (8)</li>
	<li><a href="http://www.herewithme.fr/2007/06/20/vous-avez-dit-blog-au-ralenti/" title="Vous avez dit &quot;Blog au ralenti ?&quot; (20 juin 2007)">Vous avez dit &quot;Blog au ralenti ?&quot;</a> (4)</li>
	<li><a href="http://www.herewithme.fr/2009/03/18/nouvelle-api-widgets-wordpress-28-et-un-multi-widget-extension-wp-polls/" title="Nouvelle API de Widgets pour WordPress 2.8, et un multi widget pour l&#8217;extension WP-Polls ! (18 mars 2009)">Nouvelle API de Widgets pour WordPress 2.8, et un multi widget pour l&#8217;extension WP-Polls !</a> (2)</li>
	<li><a href="http://www.herewithme.fr/2007/09/24/les-4-nouveauts-dveloppeur-de-wordpress-23/" title="Les 4 nouveaut&eacute;s &quot;D&eacute;veloppeur&quot; de WordPress 2.3 (24 septembre 2007)">Les 4 nouveaut&eacute;s &quot;D&eacute;veloppeur&quot; de WordPress 2.3</a> (8)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.herewithme.fr/2009/12/30/barre-sidebar-automatique-par-page-sidebar-par-defaut/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Nouvelle API de Widgets pour WordPress 2.8, et un multi widget pour l&#8217;extension WP-Polls !</title>
		<link>http://www.herewithme.fr/2009/03/18/nouvelle-api-widgets-wordpress-28-et-un-multi-widget-extension-wp-polls/</link>
		<comments>http://www.herewithme.fr/2009/03/18/nouvelle-api-widgets-wordpress-28-et-un-multi-widget-extension-wp-polls/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 07:36:26 +0000</pubDate>
		<dc:creator>Amaury</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Widgets]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.herewithme.fr/?p=702</guid>
		<description><![CDATA[Alors qu&#8217;il n&#8217;y a pas encore de changements sur l&#8217;UI des Widgets, l&#8217;API de développement des Widgets a été revue ! Il est clair que pour les développeurs d&#8217;extensions et de Widgets l&#8217;ancienne API n&#8217;était pas à la hauteur pour la gestion des Widgets multiples&#8230; Eh oui&#8230; Entre WordPress 2.3 et WordPress 2.7, l&#8217;API des [...]]]></description>
			<content:encoded><![CDATA[<p>Alors qu&#8217;il n&#8217;y a pas encore de changements sur l&#8217;UI des <a href="http://www.herewithme.fr/tag/widgets/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widgets">Widgets</a>, l&#8217;API de <a href="http://www.herewithme.fr/tag/developpement/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Développement">développement</a> des <a href="http://wpdevel.wordpress.com/2009/03/18/converting-default-widgets-to-the-new-wi/">Widgets a été revue</a> ! Il est clair que pour les développeurs d&#8217;extensions et de <a href="http://www.herewithme.fr/tag/widgets/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widgets">Widgets</a> l&#8217;ancienne API n&#8217;était pas à la hauteur pour la gestion des <a href="http://www.herewithme.fr/tag/widgets/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widgets">Widgets</a> multiples&#8230;</p>
<p>Eh oui&#8230; Entre <a href="http://www.herewithme.fr/tag/wordpress/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with WordPress">WordPress</a> 2.3 et <a href="http://www.herewithme.fr/tag/wordpress/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with WordPress">WordPress</a> 2.7, l&#8217;API des <a href="http://www.herewithme.fr/tag/widgets/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widgets">widgets</a> n&#8217;a pas bougé d&#8217;un pouce alors que l&#8217;ergonomie et l&#8217;apparence ont complètement changé&#8230; L&#8217;une des problématiques les plus courantes était dans le cadre de <a href="http://www.herewithme.fr/tag/themes/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Thèmes">thèmes</a> avec un grand nombre de sidebars&#8230; Et oui à part 2-3 <a href="http://www.herewithme.fr/tag/widgets/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widgets">Widgets</a> (comme le texte) qui proposaient l&#8217;ajout multiple, on était vite coincé&#8230;</p>
<p>Par exemple, dans <a href="http://www.herewithme.fr/tag/wordpress/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with WordPress">WordPress</a> 2.7, il est impossible de placer un widget &laquo;&nbsp;catégories&nbsp;&raquo; sur 2 sidebars en même temps&#8230; Frustrant lorsqu&#8217;on souhaite gérer des sidebars différentes selon la vue (tags, archives, catégories&#8230;) où l&#8217;on se trouve !</p>
<p>Pour remédier à cela, il fallait créer des <a href="http://www.herewithme.fr/tag/widgets/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widgets">widgets</a> multiples, autrement dit que l&#8217;on peut ajouter plusieurs fois, la problématique étant que peu d&#8217;extensions proposées ce fonctionnement, car plus compliqué à développer.</p>
<p><strong>WP-Polls</strong></p>
<p>C&#8217;est le cas par exemple de <a href="http://wordpress.org/extend/plugins/wp-polls/">WP-Polls</a> 2.40, une extension permettant de gérer des sondages, qui par défaut ne possède qu&#8217;un seul widget. Cela peut poser problème si vous souhaitez afficher 2 sondages sur 2 sidebars différentes.</p>
<p>Pour mes <a href="http://wp-box.fr">besoins pros</a>, j&#8217;ai dû adapté cette extension afin de la rendre compatible multi widget, et ainsi pouvoir placer autant de sondages que le client souhaitait sur ces sidebars. Je mets par la même occasion à disposition le widget en téléchargement ci-dessous :</p>
<blockquote><p><a href="http://www.herewithme.fr/wp-content/uploads/2009/03/wp-polls-widget-multi.phps">WP Polls Widget Multi</a> v2.40 (à renommer en .php et placer dans le dossier &laquo;&nbsp;wp-content/<a href="http://www.herewithme.fr/tag/plugins/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Plugins">plugins</a>&nbsp;&raquo;)</p></blockquote>
<p>Et voici un petit apercu de 4 widget &laquo;&nbsp;Poll&nbsp;&raquo; en place avec encore la possibilité d&#8217;en ajouter :</p>
<p><div id="attachment_714" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.herewithme.fr/wp-content/uploads/2009/03/multi-wp-polls.png"><img class="size-medium wp-image-714" title="WP-Polls Multi Widget" src="http://www.herewithme.fr/wp-content/uploads/2009/03/multi-wp-polls-300x125.png" alt="La version multi widget de l'extension WP-Polls" width="300" height="125" /></a><p class="wp-caption-text">La version multi widget de l&#39;extension WP-Polls</p></div></p>
<p>La difficulté de <a href="http://www.herewithme.fr/tag/wordpress/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with WordPress">WordPress</a> 2.7, c&#8217;est que l&#8217;API pour faire du multi widget est très rudimentaire et de ce fait pas évident à manipuler pour les développeurs d&#8217;extensions non confirmés&#8230;</p>
<p><strong>Petite comparaison :</strong></p>
<ul>
<li>Mon widget multi de WP-Polls (WP 2.7) fait 240 lignes. (dispo ci-dessus)</li>
<li>Le même widget (quasiment) fait par l&#8217;auteur de <a href="http://lesterchan.net/wordpress/2009/03/17/new-wp_widget-class-in-wordpress-28/">WP-Polls avec l&#8217;API 2.8</a> ne fait plus que 75 lignes.</li>
</ul>
<p>Évidemment lorsque l&#8217;API est optimisée, c&#8217;est tout de suite plus simple et plus rapide de créer du multi widget ;)</p>
<p>Contrairement à l&#8217;ancienne API qui n&#8217;était composée que de fonctions PHP classiques, la nouvelle API va faire plaisir au puriste PHP ! Et oui pour la première fois (ou presque), nous devrons étendre une classe existante de <a href="http://www.herewithme.fr/tag/wordpress/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with WordPress">WordPress</a> pour ajouter nos <a href="http://www.herewithme.fr/tag/widgets/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widgets">widgets</a>, hop petit exemple :</p>
<pre class="php">class WP_Widget_Polls extends WP_Widget {</pre>
<p>Sur ce rythme on ne pourra bientôt plus critiquer <a href="http://www.herewithme.fr/tag/wordpress/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with WordPress">WordPress</a> pour la qualité de son code ;) Bien entendu, tout cela reste compatible PHP4 ! (ce qui n&#8217;est pas un cadeau pour les développeurs de WP)</p>
<p>Je ne détaille pas plus ici l&#8217;utilisation de la nouvelle API des <a href="http://www.herewithme.fr/tag/widgets/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Widgets">widgets</a>, j&#8217;en reparlerai avec un cas pratique lors de la sortie de WP 2.8. Pour info, la discussion relative à la<a href="http://core.trac.wordpress.org/ticket/8441"> nouvelle API est disponible sur le trac de WP</a>.</p>

	Tags: <a href="http://www.herewithme.fr/tag/developpement/" title="Développement" rel="tag nofollow">Développement</a>, <a href="http://www.herewithme.fr/tag/plugins/" title="Plugins" rel="tag nofollow">Plugins</a>, <a href="http://www.herewithme.fr/tag/widgets/" title="Widgets" rel="tag nofollow">Widgets</a>, <a href="http://www.herewithme.fr/tag/wordpress/" title="WordPress" rel="tag nofollow">WordPress</a><br />

	<h4>Articles relatifs</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.herewithme.fr/2007/01/16/wordpressmu-copie-revoir/" title="WordPressMu : Copie &agrave; revoir&#8230; (16 janvier 2007)">WordPressMu : Copie &agrave; revoir&#8230;</a> (9)</li>
	<li><a href="http://www.herewithme.fr/2007/06/20/vous-avez-dit-blog-au-ralenti/" title="Vous avez dit &quot;Blog au ralenti ?&quot; (20 juin 2007)">Vous avez dit &quot;Blog au ralenti ?&quot;</a> (4)</li>
	<li><a href="http://www.herewithme.fr/2009/12/30/barre-sidebar-automatique-par-page-sidebar-par-defaut/" title="Une barre de sidebar automatique par page et une sidebar par défaut ! (30 décembre 2009)">Une barre de sidebar automatique par page et une sidebar par défaut !</a> (7)</li>
	<li><a href="http://www.herewithme.fr/2007/07/20/sortie-de-simple-tagging-168/" title="Sortie de Simple Tagging 1.6.8 ! (20 juillet 2007)">Sortie de Simple Tagging 1.6.8 !</a> (5)</li>
	<li><a href="http://www.herewithme.fr/2007/10/02/simple-tags-gerez-vos-tags-differemment/" title="Simple Tags : G&eacute;rez vos tags&#8230; diff&eacute;remment&#8230; (2 octobre 2007)">Simple Tags : G&eacute;rez vos tags&#8230; diff&eacute;remment&#8230;</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.herewithme.fr/2009/03/18/nouvelle-api-widgets-wordpress-28-et-un-multi-widget-extension-wp-polls/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
