[niveau: intermédiaire]
Vous utilisez WordPress et avez choisi un des nombreux thèmes gratuits qu’on trouve sur le Net. Et puis vous souhaitez utiliser la barre latérale (« sidebar ») pour afficher dynamiquement des widgets comme WordPress le permet ? Cependant vous remarquez que même en cliquant sur « Save », les widgets ajoutés ne se sauvegardent jamais…
Tout d’abord vous devez aller vérifier le fichier sidebar.php (« Barre latérale ») dans l’éditeur de votre thème.
Voici un exemple de ce que vous devriez avoir:
<ul id="sidebar">
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
<li id="about">
<h2>About</h2>
<p>This is my blog.</p>
</li>
<li id="links">
<h2>Links</h2>
<ul>
<li><a href="http://example.com">Example</a></li>
</ul>
</li>
<?php endif; ?>
</ul>
C’est le code par défaut qui fonctionne pour que la sidebar s’affiche correctement. Vous devriez donc d’abord tester en insérant ce code là. On notera que s’il n’y a pas de widgets, alors la barre affichera les deux éléments définis par défaut (ici « About » et « Links »).
Maintenant, il suffit d’activer la sidebar dans le fichier « functions.php » de votre thème. Pour cela, voici le code que vous devriez avoir dans ce fichier :
<?php
if ( function_exists('register_sidebar') )
register_sidebar();
?>
C’est tout, seulement ces quatre lignes. Il dit à WordPress qu’il doit activer une sidebar. Maintenant, les widgets doivent pouvoir s’ajouter et se sauvegarder sans problème.
Supposons maintenant que vous ne voulez pas utiliser le code par défaut, mais que vous voulez une barre latérale un peu plus personnalisée.
Voici un exemple avec des div :
<div id="sidebar">
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
<div class="mywidget">
<h2 class="title">About</h2>
<p>This is my blog.</p>
</div>
<div class="mywidget">
<h2 class="title">Links</h2>
<ul>
<li><a href="http://example.com">Example</a></li>
</ul>
</div>
<?php endif; ?>
</div>
Et le code associé à mettre dans le fichier functions.php :
<?php
if ( function_exists('register_sidebar') )
register_sidebar(array(
'before_widget' => '<div class="monwidget">',
'after_widget' => '</div>',
'before_title' => '<h2 class="title">',
'after_title' => '</h2>',
));
?>
Maintenant vos widgets devraient s’enregistrer sans problème !
(Source: http://automattic.com/code/widgets/themes/)