{"id":696,"date":"2009-06-07T14:22:39","date_gmt":"2009-06-07T13:22:39","guid":{"rendered":"http:\/\/flaven.fr\/?p=696"},"modified":"2013-09-27T14:38:38","modified_gmt":"2013-09-27T12:38:38","slug":"wordpress-creer-un-theme-wordpress-widget-ready","status":"publish","type":"post","link":"https:\/\/flaven.fr\/2009\/06\/wordpress-creer-un-theme-wordpress-widget-ready\/","title":{"rendered":"WordPress &#8211; Cr\u00e9er un th\u00e8me WordPress Widget Ready"},"content":{"rendered":"<p><!--  WordPress, th\u00e8me, Widget, Templates    --><br \/>\nVoil\u00e0 bien une chose importante dont on ne souvient jamais en situation lorsque l&#8217;on en a le plus besoin, c&#8217;est \u00e0 dire au moment d&#8217;int\u00e9grer un &#8220;template&#8221; pour WordPress.<!--more--> Pour ne rien vous cacher, l&#8217;int\u00e9r\u00eat consiste \u00e0 utiliser WP comme on le ferait avec Joomla ou avec Drupal, pour positionner des \u00e9l\u00e9ments de contenu, c&#8217;est \u00e0 dire \u00e0 utiliser au maximum le moteur applicatif de widgets mais en pla\u00e7ant chacun de ces widgets dans des &#8220;sidebars&#8221; suppl\u00e9mentaires.<\/p>\n<p>On va respecter l&#8217;\u00e9quation ci-dessous.<\/p>\n<h2>Tirer profit au maximum des sidebars \/ \u00e0 la limite 1 widget = 1 sidebar<\/h2>\n<p>Pourquoi respecter une telle \u00e9quation, deux raisons \u00e0 cela principalement :<\/p>\n<ul>\n<li>En fragmentant votre code,  vous pouvez d\u00e9l\u00e9guer le d\u00e9veloppement de certains widgets \u00e0 d\u2019autres d\u00e9veloppeurs.<\/li>\n<li>Pour le responsable \u00e9ditorial du futur site, cela permet de s&#8217;appuyer sur les fonctions d&#8217;affichage de WP, sans pour autant changer de template ou d&#8217;aller triturer le code. Le maximum de fonctions \u00e9ditoriales sont g\u00e9r\u00e9es via les widgets WordPress.<\/li>\n<\/ul>\n<p>C&#8217;est vrai que lorsque vous atteigniez ce niveau de complexit\u00e9, il vaut peut-\u00eatre mieux passer \u00e0 autre chose qu&#8217;\u00e0 WordPress, Drupal par exemple.<\/p>\n<p>Pour les besoins de notre cause, nous allons travailler sur le &#8220;template&#8221; livr\u00e9 par d\u00e9faut lors de l&#8217;installation et on va le modifier afin d&#8217;ajouter des sidebars suppl\u00e9mentaires.<\/p>\n<h2>Modifier le code du fichier <code>functions.php<\/code><\/h2>\n<p>Le plus simple est donc de prendre le \u00ab template \u00bb qui est livr\u00e9 par d\u00e9faut et de le tordre jusqu\u2019\u00e0 ce qu\u2019il satisfasse vos besoins.<\/p>\n<p>Il faut  changer le fichier <code>functions.php<\/code>, en lui administrant un peu de variabilit\u00e9. c&#8217;est le sens de la commande <code>if ( function_exists('register_sidebars') ) register_sidebars(4);<\/code>. <strong>On d\u00e9clare en fait qu&#8217;il va avoir dans notre th\u00e8me 4 &#8220;sidebars&#8221; dont celle qui existe actuellement.<\/strong><\/p>\n<p><strong>Extrait de functions.php<\/strong><\/p>\n<pre lang=\"php\">\r\n\t\/**\r\n\t * @package WordPress\r\n\t * @subpackage Default_Theme\r\n\t *\/\r\n\t\/*\r\n\t\r\n\tLe code d'origine est d\u00e9sactiv\u00e9...\r\n\t\r\n\tif ( function_exists('register_sidebar') )\r\n\t    register_sidebar(array(\r\n\t        'before_widget' =&gt; '<li class=\"widget %2$s\">',\r\n\t        'after_widget' =&gt; '<\/li>',\r\n\t        'before_title' =&gt; '<h2 class=\"widgettitle\">',\r\n\t        'after_title' =&gt; '<\/h2>',\r\n\t    ));\r\n\t*\/\r\n\r\n\r\n\tif ( function_exists('register_sidebars') )\r\n\t\/* nous avons 4 sidebars \u00e0 disposition d\u00e9sormais *\/\r\n\tregister_sidebars(4);\r\n<\/pre>\n<h2>Cr\u00e9er les fichiers suppl\u00e9mentaires en respectant une nomenclature<\/h2>\n<p>Dans le th\u00e8me par d\u00e9faut, il existe un fichier <code>sidebar.php<\/code>. Il vous faut conserver le nom <code>sidebar.php<\/code> car ce fichier est appel\u00e9 par la fonction <code> get_sidebar();<\/code>. Les fichiers suivants, contenant vos autres &#8220;sidebars&#8221; sont ensuite num\u00e9rot\u00e9s \u00e0 partir de 2 <u>ex<\/u> sidebar2.php, sidebar3.php, sidebar4.php&#8230;etc.<\/p>\n<h2>Ins\u00e9rer le code dans un fichier de &#8220;sidebar&#8221; par exemple <code>sidebar2.php<\/code><\/h2>\n<p>Il vous suffit d&#8217;indiquer le fichier de &#8220;sidebar&#8221; la condition suivante <code>if ( function_exists('dynamic_sidebar') &amp;&amp; dynamic_sidebar(2) ) : else :<\/code>  et de clore cette condition avec un <code>endif;<\/code>. C&#8217;est la mention <b>dynamic_sidebar(2)<\/b> qui permet l&#8217;appelle \u00e0 la sidebar2.php, si nous avions eu dynamic_sidebar(4), on aurait eu un appel \u00e0 sidebar4.php<\/p>\n<p>Ci-dessous le code complet du fichier <code>sidebar2.php<\/code>, pour pouvoir voir d\u00e9terminer qu&#8217;il s&#8217;agit bien de la <code>sidebar2.php<\/code>, on a plac\u00e9 un <code>&lt;h2 class=&quot;pagetitle&quot;&gt;sidebar2.php&lt;\/h2&gt;<\/code> en d\u00e9but de code.<\/p>\n<p><strong>Extrait de sidebar2.php<\/strong><\/p>\n<pre lang=\"php\" escaped=\"true\">\r\n\t&lt;?php\r\n\t\/**\r\n\t * @package WordPress\r\n\t * @subpackage Default_Theme\r\n\t *\/\r\n\t?&gt;\r\n\t&lt;div&gt;\r\n\t\t&lt;h2 class=&quot;pagetitle&quot;&gt;sidebar2.php&lt;\/h2&gt;\r\n\t&lt;ul&gt;\r\n\t&lt;?php if ( function_exists('dynamic_sidebar') &amp;&amp; dynamic_sidebar(2) ) : else : ?&gt;\r\n\t\t&lt;!-- les widgets viennent ici --&gt;\r\n\t&lt;?php endif; ?&gt;\r\n\t<\/ul>\r\n\t<\/div>\r\n\r\n\t\r\n<\/pre>\n<h2>Jouer plac\u00e9 ou pas&#8230;<\/h2>\n<p>Libre \u00e0 vous de placer vos &#8220;sidebars&#8221; additionnelles o\u00f9 vous le souhaitez. Dans notre exemple, on place <code>sidebar2.php<\/code> dans le fichier <code>footer.php<\/code> et <code>sidebar3.php<\/code> en &#8220;include&#8221; dans le fichier <code>sidebar.php<\/code> lui-m\u00eame et enfin <code>sidebar4.php<\/code> en &#8220;include&#8221; dans le fichier <code>index.php<\/code><\/p>\n<p><b>Une vue compl\u00e8te de la sidebar de notre th\u00e8me<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/06\/wp_wp_widgetizing_themes_1.jpg\" alt=\"Wordpress - Cr\u00e9er un th\u00e8me WordPress Widget Ready\" width=\"500\" height=\"265\" class=\"aligncenter\"><\/p>\n<p><b><code>sidebar.php<\/code> qui correpsond \u00e0 notre &#8220;sidebar1&#8221;<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/06\/wp_wp_widgetizing_themes_1_a.jpg\" alt=\"Wordpress - Cr\u00e9er un th\u00e8me WordPress Widget Ready\" width=\"500\" height=\"265\" class=\"aligncenter\"><\/p>\n<p><b><code>sidebar3.php<\/code> inclus dans <code>sidebar.php<\/code><\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/06\/wp_wp_widgetizing_themes_1_b.jpg\" alt=\"Wordpress - Cr\u00e9er un th\u00e8me WordPress Widget Ready\" width=\"500\" height=\"265\" class=\"aligncenter\"><\/p>\n<p><b><code>sidebar4.php<\/code> inclus dans <code>index.php<\/code><\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/06\/wp_wp_widgetizing_themes_1_c.jpg\" alt=\"Wordpress - Cr\u00e9er un th\u00e8me WordPress Widget Ready\" width=\"500\" height=\"265\" class=\"aligncenter\"><\/p>\n<p><b><code>sidebar2.php<\/code> inclus dans <code>footer.php<\/code><\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/06\/wp_wp_widgetizing_themes_1_d.jpg\" alt=\"Wordpress - Cr\u00e9er un th\u00e8me WordPress Widget Ready\" width=\"500\" height=\"265\" class=\"aligncenter\"><\/p>\n<h2>Manipuler les widgets par sidebar depuis l&#8217;admin<\/h2>\n<p>Comme le positionnement de votre contenu est factoris\u00e9 dans des fichiers ind\u00e9pendants et adoss\u00e9 au moteur de widgets de WP, vous pouvez ensuite s\u00e9lectionner facilement contenu et l&#8217;endroit qui vous convient pur le placer.<\/p>\n<p><b>4 &#8220;sidebars&#8221; sont \u00e0 votre disposition<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/06\/wp_wp_widgetizing_themes_2.jpg\" alt=\"Wordpress - Cr\u00e9er un th\u00e8me WordPress Widget Ready\" width=\"500\" height=\"265\" class=\"aligncenter\"><\/p>\n<p><b>contenu sibebar4<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/06\/wp_wp_widgetizing_themes_3.jpg\" alt=\"Wordpress - Cr\u00e9er un th\u00e8me WordPress Widget Ready\" width=\"500\" height=\"265\" class=\"aligncenter\"><\/p>\n<p><b>contenu sibebar3<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/06\/wp_wp_widgetizing_themes_4.jpg\" alt=\"Wordpress - Cr\u00e9er un th\u00e8me WordPress Widget Ready\" width=\"500\" height=\"265\" class=\"aligncenter\"><\/p>\n<p><b>contenu sibebar2<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/06\/wp_wp_widgetizing_themes_5.jpg\" alt=\"Wordpress - Cr\u00e9er un th\u00e8me WordPress Widget Ready\" width=\"500\" height=\"265\" class=\"aligncenter\"><\/p>\n<p><b>\u00e9dition du widget contenu dans la sibebar2 inclus dans <code>footer.php<\/code><\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/06\/wp_wp_widgetizing_themes_6.jpg\" alt=\"Wordpress - Cr\u00e9er un th\u00e8me WordPress Widget Ready\" width=\"500\" height=\"265\" class=\"aligncenter\"><\/p>\n<p><b>contenu sibebar1<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/06\/wp_wp_widgetizing_themes_7.jpg\" alt=\"Wordpress - Cr\u00e9er un th\u00e8me WordPress Widget Ready\" width=\"500\" height=\"265\" class=\"aligncenter\"><\/p>\n<h2>Un peu plus de code&#8230;<\/h2>\n<p><strong>Extrait de sidebar.php<\/strong><\/p>\n<pre lang=\"php\" escaped=\"true\">\r\n\t&lt;?php\r\n\t\/**\r\n\t * @package WordPress\r\n\t * @subpackage Default_Theme\r\n\t *\/\r\n\t?&gt;\r\n\t\t&lt;div id=&quot;sidebar&quot;&gt;\r\n\t\t\t&lt;h2 class=&quot;pagetitle&quot;&gt;sidebar1.php&lt;\/h2&gt;\r\n\t\t\t&lt;ul&gt;\r\n\t\t\t\t&lt;?php \t\/* Widgetized sidebar, if you have the plugin installed. *\/\r\n\t\t\t\t\t\tif ( !function_exists('dynamic_sidebar') || !dynamic_sidebar(1) ) : ?&gt;\r\n\t<!-- la suite se trouve dans le fichier d'origine -->\r\n\t\r\n<\/pre>\n<p><strong>Extrait de sidebar3.php<\/strong><\/p>\n<pre lang=\"php\" escaped=\"true\">\r\n\t&lt;?php\r\n\t\/**\r\n\t * @package WordPress\r\n\t * @subpackage Default_Theme\r\n\t *\/\r\n\t?&gt;\r\n\t&lt;div&gt;\r\n\t\t&lt;h2 class=&quot;pagetitle&quot;&gt;sidebar3.php&lt;\/h2&gt;\r\n\t&lt;ul&gt;\r\n\t&lt;?php if ( function_exists('dynamic_sidebar') &amp;&amp; dynamic_sidebar(3) ) : else : ?&gt;\r\n\t\t&lt;!-- les widgets viennent ici --&gt;\r\n\t&lt;?php endif; ?&gt;\r\n\t<\/ul>\r\n\t<\/div>\r\n\r\n\t\r\n<\/pre>\n<p><strong>Extrait de sidebar4.php<\/strong><\/p>\n<pre lang=\"php\" escaped=\"true\">\r\n\t&lt;?php\r\n\t\/**\r\n\t * @package WordPress\r\n\t * @subpackage Default_Theme\r\n\t *\/\r\n\t?&gt;\r\n\t&lt;div&gt;\r\n\t\t&lt;h2 class=&quot;pagetitle&quot;&gt;sidebar4.php&lt;\/h2&gt;\r\n\t&lt;ul&gt;\r\n\t&lt;?php if ( function_exists('dynamic_sidebar') &amp;&amp; dynamic_sidebar(4) ) : else : ?&gt;\r\n\t\t&lt;!-- les widgets viennent ici --&gt;\r\n\t&lt;?php endif; ?&gt;\r\n\t<\/ul>\r\n\t<\/div>\r\n\t\r\n<\/pre>\n<p><b>extrait du code <code>index.php<\/code>, il s&#8217;agit de l&#8217;insertion de &#8220;sidebar4&#8221;<\/b><\/p>\n<pre lang=\"php\" escaped=\"true\">\r\n\r\n&lt;?php get_sidebar(); ?&gt;\r\n\r\n&lt;div id=&quot;sidebar&quot;&gt;\r\n\r\n&lt;!-- insertion sidebar4.php --&gt;\r\n&lt;?php include (TEMPLATEPATH . &quot;\/sidebar4.php&quot;); ?&gt;\r\n\t&lt;\/div&gt;\r\n\r\n&lt;?php get_footer(); ?&gt;\r\n<\/pre>\n<p><b>extrait du code <code>sidebar.php<\/code>, il s&#8217;agit de l&#8217;insertion de &#8220;sidebar3&#8221;<\/b><\/p>\n<pre lang=\"php\" escaped=\"true\">\r\n\r\n&lt;?php endif; ?&gt;\r\n&lt;\/ul&gt;\r\n\r\n&lt;!-- insertion sidebar3.php --&gt;\r\n&lt;?php include (TEMPLATEPATH . &quot;\/sidebar3.php&quot;); ?&gt;\r\n\r\n&lt;\/div&gt;\r\n<\/pre>\n<p><b>extrait du code <code>footer.php<\/code>, il s&#8217;agit de l&#8217;insertion de &#8220;sidebar2&#8221;<\/b><\/p>\n<pre lang=\"php\" escaped=\"true\">\r\n\r\n\t\t\t&lt;?php wp_footer(); ?&gt;\r\n\r\n\r\n\t&lt;div&gt;&lt;?php include (TEMPLATEPATH . &quot;\/sidebar2.php&quot;); ?&gt;&lt;\/div&gt;\r\n\t&lt;\/body&gt;\r\n\t&lt;\/html&gt;\r\n\r\n<\/pre>\n<h2>Pour aller plus loin<\/h2>\n<ul>\n<li>Une page de r\u00e9capitulation sur comment &#8220;Widgetizing Themes&#8221;<br \/>\n<a href=\"http:\/\/automattic.com\/code\/widgets\/themes\/\" target=\"_blank\">http:\/\/automattic.com\/code\/widgets\/themes\/<\/a><\/li>\n<li>Adding Extra Sidebar to your WordPress Theme<br \/>\n<a href=\"http:\/\/www.blogohblog.com\/adding-extra-sidebar-to-your-wordpress-theme\/\" target=\"_blank\">http:\/\/www.blogohblog.com\/adding-extra-sidebar-to-your-wordpress-theme\/<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Voil\u00e0 bien une chose importante dont on ne souvient jamais en situation lorsque l&#8217;on en a le plus besoin, c&#8217;est \u00e0 dire au moment d&#8217;int\u00e9grer&hellip; <\/p>\n<p class=\"text-center\"><a href=\"https:\/\/flaven.fr\/2009\/06\/wordpress-creer-un-theme-wordpress-widget-ready\/\" class=\"more-link\">Continue reading &rarr; <span class=\"screen-reader-text\">WordPress &#8211; Cr\u00e9er un th\u00e8me WordPress Widget Ready<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":9399,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"bf_ai_meta_description":"Cr\u00e9er un th\u00e8me WordPress Widget Ready pour optimiser le positionnement de contenu. Utilisez des sidebars suppl\u00e9mentaires pour chaque widget, simplifiant ainsi le d\u00e9veloppement.","bf_ai_og_title":"","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[3448,3449,3451,3452],"tags":[188,126,189,2223],"class_list":["post-696","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tools-productivity","category-tutorials-how-to","category-web-design-front-end","category-wordpress-cms","tag-templates","tag-theme","tag-widget","tag-wordpress"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3Vuhl-be","jetpack_featured_media_url":"https:\/\/flaven.fr\/wp-content\/uploads\/2012\/04\/wp_logo_generic3_g_bf.jpg","_links":{"self":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/696","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/comments?post=696"}],"version-history":[{"count":1,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/696\/revisions"}],"predecessor-version":[{"id":9546,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/696\/revisions\/9546"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media\/9399"}],"wp:attachment":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media?parent=696"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/categories?post=696"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/tags?post=696"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}