Ajouter des « Widgets » à un thème WordPress

Dans WordPress, il est désormais possible d’ajouter des Widgets dans quatre zones :

  • l’en-tête,
  • le contenu,
  • la colonne latérale,
  • le pied de page.

Le nombre de zones n’est pas limité : on peut très bien imaginer un thème avec deux colonnes latérales de Widgets et un pied de page avec trois zones de Widgets !

La plupart des thèmes disponibles se contente de proposer une ou plusieurs colonnes latérales Widget Ready. Or, pour des raisons esthétiques ou de séméiologie (!), on peut vouloir afficher WordPress sur une colonne, avec les informations complémentaires dans le pied de page.

Nous allons donc voir ici, à travers quelques codes simples que nous avons développés (nous préfèrerons ici la pratique à la théorie, car c’est en forgeant qu’on devient forgeron), comment ajouter des Widgets à un thème dans une colonne ou dans un pied de page. Leur adaptation demandera un minimum d’effort, nous en sommes persuadé…

Dans notre premier thème, nous nous contenterons d’afficher une deuxième colonne latérale dans le corps de la page affichant des Widgets ; dans le deuxième, nous créerons un pied de page développé, qui comprendra trois zones de Widgets.

Précisions au préalable que la widgetization d’un thème demande la modification de trois fichiers :

  • le fichier functions.php,
  • la feuille de style que nous appellerons par commodité styles.css,
  • le fichier de destination, sidebar.php ou footer.php, selon la zone de destination des widgets dans nos exemples présentés ici.

Le fichier functions.php

Le fichier functions.php comportera l’instruction suivante pour notre thème à la deuxième colonne :

<?php
if (function_exists('register_sidebar'))
register_sidebar(array('name'=>'barre',
  'before_widget' => '<div id="%1$s" class="widget_sidebar %2$s">',
  'after_widget' => '</div>',
  'before_title' => '<h2 class="widgettitle">',
  'after_title' => '</h2>',
));
?>

Ici, sidebar a été utilisé au singulier, car nous demandons la création d’une seule zone.

Pour notre pied de page développé, nous écrirons :

<?php
if (function_exists('register_sidebar'))
register_sidebars(3,array(
  'before_widget' => '<div id="%1$s" class="widget_sidebar %2$s">',
  'after_widget' => '</div>',
  'before_title' => '<h2 class="widgettitle">',
  'after_title' => '</h2>',
));

Ici, la déclaration est la même que précédemment, à l’exception du chiffre 3 qui précise le nombre de Sidebars attendu et de l’ajout de la marque du pluriel à sidebar.

Cette solution présente un inconvénient ergonomique : aucun nom ne sera donné à la zone, au risque de créer une confusion dans l’esprit de l’utilisateur. Aussi vaut-il mieux déclarer un par un chaque widget, en leur attribuant un nom significatif : par exemple, pied_gauche, pied_centre et pied_droit.

Le fichier style.css

Après avoir déclaré les Widgets et le formatage attendu, nous pouvons les styliser dans le fichier style.css comme suit dans notre thème à la colonne :

#sidebar {
/* 8 juin 2010. La syntaxe de cette feuille de style est laide comme les suivantes dans l'article, car nous avons progressé depuis la rédaction de l'article. Cependant, nous laissons l'article en l'état... qui pourra peut-être éclairer les débutants. */
  float: left;
  margin: 0 0 0 20px;
  padding: 0
  width: 320px
}
#sidebar ul {
  margin-bottom: 20px
}
#sidebar a {
  color: #000
}
.widget_sidebar {
  display: block;
  float: left;
  font-size:1em;
  margin: 0 0 5px 0;
  padding: 0;
  width: 320px
}
.widget_sidebar h1, .widget_sidebar h2, .widget_sidebar h3 {
  background: #ffe6e6;
  border-bottom: 1px solid #000;
  border-top: 1px solid #000;
  color: #fff;
  margin: 0;
  padding : 2px 0px 2px 5px
}
.widget_sidebar ul h2 {
  border-bottom: dashed 1px #000;
  font-size: 1.5em;
  padding-bottom: 10px
}
.widget_sidebar ul li {
  border-bottom: dashed 1px #000;
  font-size: 1.1em;
  line-height: 1.6em;
  list-style: none
}
.widget_sidebar ul ul li {
  border-bottom: dashed 1px #000
}
#sidebar a:hover {
  text-decoration: underline
}
.widget_sidebar p {
  font-size: 1em;
  padding: 10px;
  text-align: center
}
/*--------------Widgets--------------*/
li.widget h2 {
  color: #000;
}
/*-------------Calendar-----------------*/
#wp-calendar {
  margin-top: 5px;
  text-align: left;
  width: 180px
}
#wp-calendar th {
  margin-top: 5px
}
#wp-calendar caption {
  margin-top: 5px;
  font-size: 1.2em

Pour le pied de page, nous le styliserons ainsi…

#footer_sidebar {
  display: block;
  height: 260px;
  margin-left: 25px;
  margin-right: 25px;
  padding-top: 25px
}
#footer_sidebar_1 {
  float: left;
  margin-right: 25px;
  width: 180px
}
#footer_sidebar_2 {
  float: left;
  margin-right: 25px;
  width: 180px
}
#footer_sidebar_3 {
  float: left;
  width: 180px
}
#footer ul {
  margin-bottom: 20px
}
.widget_sidebar h1, .widget_sidebar h2, .widget_sidebar h3 {
  color: #000;
  border-bottom: 1px solid #000;
  border-top: 1px solid #000;
  margin: 0;
  padding: 2px 0px 2px 0px;
  text-align: center
}
.widget_sidebar ul h2 {
  border-bottom: dashed 1px #000;
  font-size: 1.5em;
  padding-bottom: 10px
}
.widget_sidebar ul li {
  border-bottom: dashed 1px #000;
  font-size: 1.1em;
  list-style: none;
  line-height: 1.6em
}
.widget_sidebar ul ul li {
  border-bottom: dashed 1px #000
}
#sidebar a:hover {
  text-decoration: underline
}
.widget_sidebar p {
  color: #000;
  font-size: 1em;
  padding: 10px;
  text-align: center
}
/*--------------Widgets--------------*/
li.widget h2 {
  color: #000
}
/*-------------Calendar-----------------*/
#wp-calendar {
  margin-top: 5px;
  text-align: left;
  width: 180px
}
#wp-calendar th {
  margin-top: 5px
}
#wp-calendar caption {
  font-size: 1.2em;
  margin-top: 5px

(Nota. Pour les exemples, nous nous sommes contenté de la couleur noire, qui n’affichera pas grand’chose !)

Déclaration des Widgets dans les fichiers de destination

Enfin, il reste à déclarer les Widgets dans la colonne de notre premier thème. Il suffit d’ajouter à notre fichier sidebar.php la déclaration…
<?php
if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar(1) ) : ?>
<?php endif; ?>

Pour notre fichier footer.php du deuxième thème, l’instruction sera :

<div id="footer_sidebar">
  <div id="footer_sidebar_1">
  <?php if (!function_exists('dynamic_sidebar')
|| !dynamic_sidebar(1)) : ?>
  <?php endif; ?>
  </div>
  <div id="footer_sidebar_2">
  <?php if (!function_exists('dynamic_sidebar')
|| !dynamic_sidebar(2)) : ?>
  <?php endif; ?>
  </div>
  <div id="footer_sidebar_3">
  <?php if (!function_exists('dynamic_sidebar')
|| !dynamic_sidebar(3)) : ?>
  <?php endif; ?>
  </div>
</div>

Traditionnellement, cette déclaration est placée en tête du fichier, le restant étant laissé vide. Néanmoins, il est possible de coder en dur certains éléments, et d’ajouter la déclaration à la suite. Ainsi, l’ajout de Widgets dans l’interface d’administration de WordPress n’affectera pas le codage.

À l’usage, nous avons noté un dysfonctionnement. Si trois zones de widgets sont prévues dans le pied de page à gauche, au centre et à droite, la zone centrale ne peut être laissée vide : sinon, les Widgets placés dans la zone de droite occupent le centre. Pour obvier à cet inconvénient, il suffit d’ajouter un Widget texte vide dans la zone centrale, avec un espace insécable.

(Nota. Nous prions nos lecteurs de nous excuser pour les anglicismes, plus ou moins incontournables en la matière !)

 

Imprimer cet article

 

Partager cet article par…

  • courrier électronique
  • Facebook
  • Twitter
  • MySpace
  • Technocrati
  • LinkedIn
  • Digg
  • Delicious
  • Favoris Google
 
 

Mot(s) clef : , , , , , , , , , | Cet article a été publié le 19/08/2008 à 19:55 et modifié le 25/10/2008 à 18:42 par Vincent Roulet et est classé dans Conception, WordPress. Vous pouvez suivre les réponses à cet article en vous abonnant au flux Rss 2.0. Vous pouvez écrire un commentaire ou poser un rétrolien manuel depuis votre propre site.

 

8 réponses à Ajouter des « Widgets » à un thème WordPress

  1. soma la fashion or xanax prescription from or us valium no prescription or about phentermine tc or buspar tramadol interaction or phentermine blue no prescription needed check or effects of taking xanax while or adipex without prescription and fast delivery or veterinary tramadol dosage or phentermine online refill or tabs.com viagra or what is phentermine medicine or tramadol veterinary dose or bible drugs soma or buy n viagra or does valium cause weight gain or valium for skittish dogs or intoxication tramadol or adipex and no prescription or order generic xanax overnight delivery or cialis how much in thailand or phentermine cheap xanax or cialis professional canada or buy adipex online without a prescription or xanax vicadin or cheapest phentermine us licensed pharmacies or viagra trial pak or dosage for adipex or viagra soft tab generic or diet pill adipex cause death or symptoms which valiums may help or luxury hotel rome phentermine online purchase or adipex and asthma or adipex no prescription usa pharmacy or phentermine on line consultation and prescription or adipex online net or buy tramadol pay cash on delivery or nrop phentermine cod or adipex stops working or tramadol and vicodin interaction or valium blood pressure or still having hunger with adipex or phentermine dietpills or adipex side effects sight or viagra bournemouth kamagra or xanax or adderall or womens viagra free sample or u 17590 cialis or new tramadol overnight tramadol hcl or viagra farmaco generico or

  2. tramadol 250mg or cialis for paralysis patients or free cialis without prescription or pills like valium or adipex bontril online ordering or tramadol tablets 50mg or tramadol effexor interaction or cardizem diovan tramadol or zavier phentermine adipex p fastin ob or viagra tolerance or natalie soma or cialis free trial offer or adipex p diet pill or phentermine suspended or buy adipex online without a prescription or cheap valium buy or diet pill phentermine huge discounts or naked mitsuko soma or no prescription adipex for sale or phentermine at wal mart or buy valium online without prescription or phentermine online and 90 or phentermine 37.5 mg x 90 or female viagra by mail or robaxin and valium or viagra blue diamond or tramadol side effects long term or phentermine and gastrointestinal disturbances or adipex diet pill online physician or buy anax valium online florida or tramadol as antidepressant or valium no effect or adipex drug interactions or phentermine risks or pictures of generic adipex or can i take valium and norco or 80 adipex varified saler or viagra cartoons or buy phentermine click here or yellow valium or search tramadol hydrochloride or phentermine world wid e shipping or tramadol spiriva or tramadol nausea or how many milligrams is this valium or adipex prises or does phentermine cause birth defects or online pharmacy phentermine without prescription or is soma stronger than flexeril or valium and tinnitus or

  3. Nselmpzu dit :

    , TrayIcon Explorer v1.0.106, [url=”http://wxtjpbvmoj.co.tv/trayicon-explorer-v1.0.106.html”]TrayIcon Explorer v1.0.106[/url], http://wxtjpbvmoj.co.tv/trayicon-explorer-v1.0.106.html TrayIcon Explorer v1.0.106, 7680,

  4. Rkorvddq dit :

    , Chop v1.3, [url=”http://wxtjpbvmoj.co.tv/chop-v1.3.html”]Chop v1.3[/url], http://wxtjpbvmoj.co.tv/chop-v1.3.html Chop v1.3, 683305,

Laisser un message