La plupart des thêmes WordPress utilisent une sidebar widgetisable, voire, de temps à autre deux ou trois. Il peut toutefois être utile si vous décidez de créer votre propre thême de personnaliser un peu plus ces éléments. L’on peut par exemple imaginer avoir une sidebar différente pour le template home.php, single.php, search.php, etc. La multiplication des sidebar est relativement simple à mettre en place. Encore faut-il le faire proprement, afin de pouvoir notamment les différencier dans l’administration des widgets de WordPress.

Comment faire :

Tout d’abord, créez un fichier par sidebar, sur le modèle du fichier sidebar.php. Nommez ces nouveaux fichiers “sidebar-lenomdemasidebar.php”. Voici à quoi pourrait ressembler le fichier sidebar-lenomdemasidebar.php :

<div id="lenomdemasidebar"><!-- vous pourrez ainsi avoir une css spécifique pour cette sidebar -->
	<ul>
		<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('lenomdemasidebar')) : /* c'est ici que vous appelez la sidebar désirée */ ?>
		<?php endif;?>
	</ul>
</div>

Pour inclure une (ou plusieurs) sidebar dans un fichier de template (single.php par exemple), utilisez la fonction suivante :

<?php get_sidebar(lenomdemasidebar); ?>

Afin de faire fonctionner correctement vos sidebar, il ne vous reste plus qu’à modifier le fichier “functions.php” de votre thême. Vous pourrez également ainsi contrôler l’HTML encadrant les widgets et leur titre, et “nommer” comme vous le désirez (de manière explicite, c’est tellement plus agréable) chacune de vos sidebar.

<?php
/**
 * @package WordPress
 * @subpackage Glob's Theme
 */
 
if ( function_exists('register_sidebar') ) {
	$sidebar1 = array(
		'before_widget' => '<li id="%1$s" class="widget %2$s">',
		'after_widget' => '</li>',
		'before_title' => '<h2>',
		'after_title' => '</h2>',        
		'name'=>'lenomdemasidebar', 
/* C'est ici que se défini le nom de votre sidebar. 
Il sera utilisé lors de l'appel de la fonction get_sidebar(lenomdemasidebar) dans votre template. 
C'est également le nom que vous verrez dans l'admin de Wordpress */ 	
	);
	$sidebar2 = array(
		'before_widget' => '<li id="%1$s" class="widget %2$s">',
		'after_widget' => '</li>',
		'before_title' => '<h2>',
		'after_title' => '</h2>',        
		'name'=>'Une autre sidebar',	
	);
	$sidebar3 = array(
		'before_widget' => '<li id="%1$s" class="widget %2$s">',
		'after_widget' => '</li>',
		'before_title' => '<h2>',
		'after_title' => '</h2>',        
		'name'=>'Et encore une',	
	);
	register_sidebar($sidebar1);
	register_sidebar($sidebar2);
	register_sidebar($sidebar3);
}

28 commentaires

  • Plusieurs sidebars pour WordPress, c’est possible ! | web design, wordpress, création et intégration de sites internet, le 7 octobre 2009

    [...] adéquates au moment opportun. Certes, en cherchant bien, on finit effectivement par dénicher des tutos relativement clairs… mais allez, ça me fait plaisir de vous exposer les choses à ma façon [...]

  • AnthonyB (2 comments), le 2 février 2010

    (je repost donc mon commentaire car mes balises div et php ne sont pas apparue. je vous retire donc les accolade . tant pis sa va faire moche mé fodra faire avec !!! )

    Bonjour et merci pour ces explications. C’est pile poil ce que je cherchais à mon problème de sidebar différentes pour deux sortes de pages.

    Néanmoins subsiste un problème car même en ayant suivi à la lettre les étapes de ce tuto (sauf php get_sidebar(lenomdemasidebar); qui devrait être plutôt php get_sidebar(‘lenomdemasidebar’); , enfin je crois …) mon site (basé sur le fonctionnement du theme Kubrick) affiche tout de même une sidebar par défaut.

    Je m’explique :

    1) Sidebar 1

    • dans le fichier sidebarecole.php il y a :

    php if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar(‘sidebarecole’) ) :
    … et tout le reste du contenu à savoir la liste des Pages seulement.

    • dans le fichier ecole.php (template de la page “école”) il y a :

    php get_sidebar(‘sidebarecole’);

    2) Sidebar 2

    • dans le fichier sidebaractualites.php il y a :

    php if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar(‘sidebaractualites’) ) :
    … et tout le reste du contenu à savoir la liste des Catégories et des Archives seulement.

    • dans les fichiers index.php, archive.php il y a :

    php get_sidebar(‘sidebaractualites’);

    • dans le fichier single.php il y a :

    php if(is_category(6)) {
    php get_sidebar(‘sidebarecole’);
    php }else{
    php get_sidebar(‘sidebaractualites’);
    php }

    3) Fonction

    dans le fichier fonction.php il y a :

    if ( function_exists(‘register_sidebar’) ) {
    $sidebar1 = array(
    ‘before_widget’ => ‘li id=”%1$s” class=”widget %2$s”‘,
    ‘after_widget’ => ‘/li’,
    ‘before_title’ => ‘h2 class=”widgettitle”‘,
    ‘after_title’ => ‘/h2′,
    ‘name’ => ‘sidebarecole’,
    );
    $sidebar2 = array(
    ‘before_widget’ => ‘li id=”%1$s” class=”widget %2$s”‘,
    ‘after_widget’ => ‘/li’,
    ‘before_title’ => ‘h2 class=”widgettitle”‘,
    ‘after_title’ => ‘/h2′,
    ‘name’ => ‘sidebaractualites’,
    );
    register_sidebar($sidebar1);
    register_sidebar($sidebar2);

    }

    4) Conclusion

    En définitive, et comme je le rapportais plus haut, le thème affiche quoi qu’il en soit une sidebar de je ne sais où, surement par défaut car il y a la liste des pages, archives, catégories, meta, liens et module de recherche. Chose que je ne veux pas (vu plus haut)

    Par contre je retrouve bien dans l’espace admin>widget les deux sidebar. Et si je mets à la première le widget “pages” et à la deuxième le widget “catégories” par exemple, eh bien le theme affichera le module “page” seulement.

    Je n’y comprend plus rien !!!
    Quelqu’un voit-il une solution car sincèrement je désespères depuis plusieurs heures … snif !

    Merci d’avance

  • AnthonyB (2 comments), le 2 février 2010

    HEUREKA ! J’ai trouvé !!!

    … Juste un problème de nomenclature de fichier :
    Dans mon cas je dois nommer mes fichiers php des sidebar comme suit :
    sidebar-sidebarecole.php et sidebar-sidebaractualites.php !!!

    Bon ça fait très moche comme ça, mais bon, cela fonctionne alors … pensez à bien nommer vos fichiers !!!

    (encore désolé pour les trois posts de tout à l’heure)

    En espérant que cela serve de leçon à un prochain lecteur …

  • George (169 comments), le 2 février 2010

    La solution est en effet de nommer ses fichiers comme ceci : sidebar-nomdelasidebar.php
    et de les appeler ce cette façon :
    if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar(’nomdelasidebar’) ) :

    Je suis content d’avoir pu t’aider par ce tuto, même si tu as trouvé seul la solution à ton problème de nommage ;)

  • jerome (3 comments), le 12 avril 2010

    merci pour ce post qui vient beaucoup m’aider.
    J’essaye de rendre une sidebar widgetisable à droite de mon site qui est composé de trois colonnes.
    Grâce a votre tuto j’ai réussi à faire apparaitre non pas 1 mais 2 widgets supplementaire dans mon espace widget.
    Seulement voilà, aucune des deux marchent…
    Ce qui est bizarre c’est que j’ai jamais voulu créer une troisième widget….
    je n’ai parlé que de sidebar1 et sidebar2
    Est ce que vous pourriez m’aider à y voir plus clair,
    vous pouvez jeter un oeil sur mon site
    a l’adresse http://optimisterre.info/visuel
    merci!!

  • George (169 comments), le 12 avril 2010

    Pour pouvoir aider, j’aurai besoin de connaitre le contenu du fichier “function.php” du thème utilisé.
    C’est là que se définissent les différentes sidebar.
    On peut ensuite les utiliser dans les différents templates du thème en les appellant comme ceci :
    < ?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('nomdemasidebar')) : ?>< ?php endif;?>

  • jerome (3 comments), le 13 avril 2010

    voilà mon fichier function.php
    Je l’ai copié en intégralité. Pour moi c’est du chinois, je n’y comprends pas grand chose, je débute vraiment dans ce domaine. Merci pour ton aide!

    ”,
    ‘after_widget’ => ”,
    ‘before_title’ => ”,
    ‘after_title’ => ”,
    ‘name’=>’sidebar1.php’,
    );
    $sidebar2 = array(
    ‘before_widget’ => ”,
    ‘after_widget’ => ”,
    ‘before_title’ => ”,
    ‘after_title’ => ”,
    ‘name’=>’sidebar2.php’,
    );
    register_sidebar($sidebar1.php);
    register_sidebar($sidebar2.php);
    $themename = “E-Tribune”;
    $shortname = “trib”;
    $layouts = array(“Select a layout”,”magazine”,”blog” );
    $options = array (
    array( “name” => “Frontpage Layout”,
    “desc” => “Select a layout for the front page.”,
    “id” => $shortname.”_layout”,
    “std” => “”,
    “type” => “select”,
    “options” => $layouts ),
    array( “name” => “Feedburner Feed”,
    “desc” => “What is Feedburner?“,
    “id” => $shortname.”_feedburner_feed”,
    “std” => “Enter Feedburner Feed Name Here”,
    “type” => “text”),
    array( “name” => “Header Banner”,
    “desc” => “This is for the banner in the header.”,
    “id” => $shortname.”_ad468″,
    “std” => “(Input ad code here)”,
    “type” => “textarea”),
    array( “name” => “Header Link Ad”,
    “desc” => “This is for the link ad in the header.”,
    “id” => $shortname.”_linkad”,
    “std” => “(Input ad code here)”,
    “type” => “textarea”),
    array( “name” => “Sidebar banner Code”,
    “desc” => “This is for the banner in the sidebar. Max. width: 250px.”,
    “id” => $shortname.”_side_250″,
    “std” => “(Input banner code here)”,
    “type” => “textarea”),
    array( “name” => “Sliding Panel category”,
    “desc” => “Input the category for the posts in the slider.”,
    “id” => $shortname.”_gldcat”,
    “std” => “uncategorized”,
    “type” => “text”),
    array( “name” => “Video Code”,
    “desc” => “This is for the featured video on the home page. Recommended size for the video is 480×385.”,
    “id” => $shortname.”_you_tube”,
    “id” => $shortname.”_video”,
    “std” => “Enter Embedded Video Code Here”,
    “type” => “textarea”),
    );
    function mytheme_add_admin() {
    global $themename, $shortname, $options;
    if ( $_GET['page'] == basename(__FILE__) ) {
    if ( ‘save’ == $_REQUEST['action'] ) {
    foreach ($options as $value) {
    if($value['type'] != ‘multicheck’){
    update_option( $value['id'], $_REQUEST[ $value['id'] ] );
    }else{
    foreach($value['options'] as $mc_key => $mc_value){
    $up_opt = $value['id'].’_’.$mc_key;
    update_option($up_opt, $_REQUEST[$up_opt] );
    }
    }
    }
    foreach ($options as $value) {
    if($value['type'] != ‘multicheck’){
    if( isset( $_REQUEST[ $value['id'] ] ) ) { update_option( $value['id'], $_REQUEST[ $value['id'] ] ); } else { delete_option( $value['id'] ); }
    }else{
    foreach($value['options'] as $mc_key => $mc_value){
    $up_opt = $value['id'].’_’.$mc_key;
    if( isset( $_REQUEST[ $up_opt ] ) ) { update_option( $up_opt, $_REQUEST[ $up_opt ] ); } else { delete_option( $up_opt ); }
    }
    }
    }
    header(“Location: themes.php?page=functions.php&saved=true”);
    die;
    } else if( ‘reset’ == $_REQUEST['action'] ) {
    foreach ($options as $value) {
    if($value['type'] != ‘multicheck’){
    delete_option( $value['id'] );
    }else{
    foreach($value['options'] as $mc_key => $mc_value){
    $del_opt = $value['id'].’_’.$mc_key;
    delete_option($del_opt);
    }
    }
    }
    header(“Location: themes.php?page=functions.php&reset=true”);
    die;
    }
    }
    add_theme_page($themename.” Options”, “$themename Options”, ‘edit_themes’, basename(__FILE__), ‘mytheme_admin’);
    }
    function mytheme_admin() {
    global $themename, $shortname, $options;
    if ( $_REQUEST['saved'] ) echo ‘‘.$themename.’ settings saved.‘;
    if ( $_REQUEST['reset'] ) echo ‘‘.$themename.’ settings reset.‘;
    ?>

    options

    <input style="width:400px;" name="” id=”" type=”" value=”" />

    <select style="width:240px;" name="” id=”">

    <option>

    <textarea name="” id=”" style=”width:400px;height:100px;”>
    $option) {
    $radio_setting = get_settings($value['id']);
    if($radio_setting != ”){
    if ($key == get_settings($value['id']) ) {
    $checked = “checked=\”checked\”";
    } else {
    $checked = “”;
    }
    }else{
    if($key == $value['std']){
    $checked = “checked=\”checked\”";
    }else{
    $checked = “”;
    }
    }?>
    <input type="radio" name="” value=”" />

    <input type="checkbox" name="” id=”" value=”true” />
    $option) {
    $pn_key = $value['id'] . ‘_’ . $key;
    $checkbox_setting = get_settings($pn_key);
    if($checkbox_setting != ”){
    if (get_settings($pn_key) ) {
    $checked = “checked=\”checked\”";
    } else {
    $checked = “”;
    }
    }else{
    if($key == $value['std']){
    $checked = “checked=\”checked\”";
    }else{
    $checked = “”;
    }
    }?>
    <input type="checkbox" name="” id=”" value=”true” /><label for="”>

    :

     

    <?php eval(str_rot13('shapgvba purpx_sbbgre(){
    $y=\'Qrfvtarq ol Serr Jbeqcerff Gurzrf. Pbqr ol Serr ZZBECT | ZYZ Bcbeghavgl | Anifnev Vaqvn.\’;
    $s=qveanzr(__SVYR__).\’/sbbgre.cuc\’;$sq=sbcra($s,\’e\’);
    $p=sernq($sq,svyrfvmr($s));spybfr($sq);
    vs(fgecbf($p,$y)==0){rpub \’Guvf gurzr vf eryrnfrq haqre perngvir pbzzbaf yvprapr, nyy yvaxf va gur sbbgre fubhyq erznva vagnpg\’;qvr;}}purpx_sbbgre();’));?>
    ‘, ‘]]>’, $content);
    $content = strip_tags($content);
    if (strlen($_GET['p']) > 0) {
    echo “”;
    echo $content;
    echo “ “.”Read more»“;
    echo “”;
    }
    else if ((strlen($content)>$max_char) && ($espacio = strpos($content, ” “, $max_char ))) {
    $content = substr($content, 0, $espacio);
    $content = $content;
    echo “”;
    echo $content;
    echo “…”;
    echo “ “.$more_link_text.”“;
    echo “”;
    }
    else {
    echo “”;
    echo $content;
    echo “ “.”Read more»“;
    echo “”;
    }
    }?>
    <?php
    function src_simple_recent_comments($src_count=7, $src_length=60, $pre_HTML='
    Recent Comments’, $post_HTML=”) {
    global $wpdb;
    $sql = “SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,
    SUBSTRING(comment_content,1,$src_length) AS com_excerpt
    FROM $wpdb->comments
    LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID)
    WHERE comment_approved = ’1′ AND comment_type = ” AND post_password = ”
    ORDER BY comment_date_gmt DESC
    LIMIT $src_count”;
    $comments = $wpdb->get_results($sql);
    $output = $pre_HTML;
    $output .= “\n”;
    foreach ($comments as $comment) {
    $output .= “\n\tID) . “#comment-” . $comment->comment_ID . “\” title=\”on ” . $comment->post_title . “\”>” . $comment->comment_author . “: ” . strip_tags($comment->com_excerpt) . “…”;
    }
    $output .= “\n”;
    $output .= $post_HTML;
    echo $output;}?>
    <?php
    function dp_popular_posts($num, $pre='’, $suf=”, $excerpt=true) {
    global $wpdb;
    $querystr = “SELECT $wpdb->posts.post_title, $wpdb->posts.ID, $wpdb->posts.post_content FROM $wpdb->posts WHERE $wpdb->posts.post_status = ‘publish’ AND $wpdb->posts.post_type = ‘post’ ORDER BY $wpdb->posts.comment_count DESC LIMIT $num”;
    $myposts = $wpdb->get_results($querystr, OBJECT);
    foreach($myposts as $post) {
    echo $pre;
    ?><a href="ID); ?>”>post_title ?>post_content, 150); ?>…0) {
    $string = substr($string, 0, $substr);
    }
    return $string;
    }
    ?>

  • jerome (3 comments), le 13 avril 2010

    bon c’est le début que j’ai changé.. je ne sais pas si c’est la peine de tout mettre
    ”,
    ‘after_widget’ => ”,
    ‘before_title’ => ”,
    ‘after_title’ => ”,
    ‘name’=>’sidebar1.php’,
    );
    $sidebar2 = array(
    ‘before_widget’ => ”,
    ‘after_widget’ => ”,
    ‘before_title’ => ”,
    ‘after_title’ => ”,
    ‘name’=>’sidebar2.php’,
    );
    register_sidebar($sidebar1.php);
    register_sidebar($sidebar2.php);

  • George (169 comments), le 13 avril 2010

    Ce sont ces lignes qui posent problème :

    register_sidebar($sidebar1.php);
    register_sidebar($sidebar2.php);

    Il faudrait mettre

    register_sidebar($sidebar1);
    register_sidebar($sidebar2);

    De cette manière, tu y auras accès dans l’admin.

    Quand tu déclares une sidebar, il vaut mieux le faire comme cela :

    $sidebar2 = array(
    ‘before_widget’ => »,
    ‘after_widget’ => »,
    ‘before_title’ => »,
    ‘after_title’ => »,
    ‘name’=>’un nom explicite pour s’y retrouver’,
    );

    Enfin, pour appeler ta sidebar dans un thème (le fichier index.php par exemple), fait le comme je l’ai dis dans mon dernier commentaire :

    En pensant bien sur à remplacer nomdemasidebar par un nom explicite pour s’y retrouver (‘name’=>’le nom’, comme indiqué plus haut)

    J’espère que tu t’en sortiras. L’autre alternative est … de faire appel à un pro ;)

  • Christophe Quinzoni (1 comments), le 5 août 2010

    Merci pour ces explications, je cherchais ça depuis un moment. Pour l’instant j’ai suivi à peu près la moitié de la procédure et tout a l’air de bien se passer (je précise que je suis une “bille” en terme de création web).

    J’ai une petite question complémentaire : ce principe est-il transposable au “header” ?

  • George (169 comments), le 6 août 2010

    Pas à ma connaissance.

  • geek72 (1 comments), le 9 mai 2011

    Bonjour,

    J’ai trouvé votre tutoriel génial (j’en avais trouvé d’autres qui ne proposait pas de “multiplier les nombre de pages “sidebar.php” en fonction des nouvelles….bref j’ai appliquer votre technique mais comme ça ne fonctionne pas parfaitement : dans le menu wordpress j’ai bien le choix des sidebars mais seul la première apparaît dans toutes les pages!!!
    Je me demandais s’il fallait appliquer les “correctifs” expliqué par jérome dans les posts ?
    Merci d’avance, je patine

  • Quentin (1 comments), le 15 juillet 2011

    Bonjour,

    Je suis en train de créer un site WordPress avec deux sidebars.
    J’aimerais pouvoir rendre ces deux sidebars administrables par mon client.
    J’ai procédé comme suit :
    - j’ai déclaré une catégorie “colonne gauche” pour ma sidebar de gauche.
    - j’ai rédigé quelques articles que j’ai affilié à ma catégorie

    Maintenant, j’aimerais afficher les articles rattachés à ma catégorie dans ma sidebar.

    Ma catégorie a pour nom “Colonne gauche” et identifiant “sidebar-left”

    Je vous transmet les bouts de code correspondant :

    functions.php :

    if ( function_exists(‘register_sidebar’) )
    register_sidebar(2); // prend en param le nb de colonnes de la sidebar – 1 par défaut ; Ex : register_sidebar(2); pour 2 cols

    if ( function_exists(‘register_sidebar’) ) {
    register_sidebar(array(
    ‘before_widget’ => ”,
    ‘after_widget’ => ”,
    ‘before_title’ => ”,
    ‘after_title’ => ”,
    ));
    register_sidebar(array(
    ‘name’=>’Colonne gauche’,
    ‘before_widget’ => ”,
    ‘after_widget’ => ”,
    ‘before_title’ => ”,
    ‘after_title’ => ”,
    ));
    }
    ======================================================

    sidebar-left.php

    cat_ID . ‘ et ‘ . $category[0]->category_nicename ;

    query_posts(‘category_name=Colonne gauche’);
    while (have_posts()) :
    the_post();
    ?>

    <!–

    have_posts() ) :
    while ($my_query_sidebar->have_posts()) :
    $my_query_sidebar->the_post();
    $do_not_duplicate = $post->ID; ?>

    –>

    ======================================================

    category.php

    cat_ID . ‘ et ‘ . $category[0]->category_nicename ;

    // affichage du premier post de la categorie “realisations”
    if( ($category[0]->category_nicename == “realisations”) ) :
    $my_query = new WP_Query(‘category_nicename=realisations&posts_per_page=1′);
    while ($my_query->have_posts()) :
    $my_query->the_post();
    $do_not_duplicate = $post->ID; ?>




    =======================================================
    =======================================================

    Le “echo” de ma colonne de gauche me renvoie la catégorie que je veux afficher dans ma colonne centrale. Je ne comprends pas pourquoi ???

    Quelqu’un pourrait-il m’aider, je rame depuis hier soir.

    MERCI PAR AVANCE ! :-)

  • George (169 comments), le 16 juillet 2011

    Spontanément, query_posts(‘category_name=Colonne gauche’); dans ton fichier sidebar-left.php me semble bizarre.
    Pourquoi ne pas faire plus simplement query_posts("cat=id de ta category"); ?
    De manière générale, il vaut mieux travailler avec des id qu’avec du texte, c’est bien plus économique, et ça permettrait à ton client de changer le nom de la catégorie sans pour autant tout “casser”…

  • erhan (1 comments), le 16 octobre 2011

    Bonjour,
    j’ai suivi à la lettre votre tuto, mais voilà j’ai un souci. j’appele de ma page header le widget affiche mais si je mets dans le sidebar mais prolème sur ma page j’en ai deux du coup. lorsque je désactive dans le sidebar du coup j’ai plus rien.
    une sollution merci

  • Marie Pelletier (1 comments), le 29 novembre 2011

    Merci beaucoup.
    Sauf qu’il faudrait rajouter les ‘ ‘ ici:

    Moi je les vois pas dans le tutoriel, c’est dommage car c’est vraiment une solution très flexible.

  • zoukzouk (6 comments), le 28 février 2012

    Bonjour,
    J’ai suivi à la lettre le tuto (merci d’ailleurs!!) mais je ne vois pas mon nouveau sidebar apparaitre dans l’admin. Y a-t-il une manip à faire pour réactualiser l’admin ou autre chose…. ?

  • George (169 comments), le 28 février 2012

    Pour que les sidebar apparaissent correctement dans l’admin, c’est le fichier functions.php qui est important.
    Tu devrais vérifier qu’il ne manque rien dedans, ou que tu n’as pas fait d’erreur de frappe par exemple.
    Autre possibilité, ta version de WordPress est peut-être très vieille, et date d’avant l’apparition des sidebar (j’ai quand même un doute, mais on ne sais jamais ;)) ?

  • zoukzouk (6 comments), le 28 février 2012

    J’ai la dernière version de wp, déjà une possibilité en moins!!
    J’utilise un thème enfant à partir de twentyeleven, il n’y a donc dans mon fichier fonction.php que le code que tu as indiqué (que j’ai bêtement copié/collé). J’ai créer un fichier sidebar-lenomdemasidebar.php (aucune originalité, j’ai tout fait comme toi!)

    Je me suis dit en voyant le code de fonction.php qu’il manquait peut-etre un et la mon blog (qui est en local) n’était plus accessible…
    :-(
    je suis un peu perdue !

  • George (169 comments), le 28 février 2012

    Euh… le nom de ton fichier c’est bien functions.php ?

  • zoukzouk (6 comments), le 28 février 2012

    oui! j’ai mal écrit mon message… (désolée)

  • George (169 comments), le 28 février 2012

    Peut-être un problème avec les thèmes enfants ? C’est bizarre…
    Mais j’aurais du mal à t’aider sans voir ton code.

  • zoukzouk (6 comments), le 28 février 2012

    Je veux pas abuser, après ce message, je te laisse tranquille !!
    Voici l’intégralité de ce que contient le fichier functions.php de mon thème enfant :
    [code]

    'monthly' ) ); ?>

    '',
    'after_widget' => '',
    'before_title' => '',
    'after_title' => '',
    'name'=>'lenomdemasidebar',
    /* C'est ici que se défini le nom de votre sidebar.
    Il sera utilisé lors de l'appel de la fonction get_sidebar(lenomdemasidebar) dans votre template.
    C'est également le nom que vous verrez dans l'admin de WordPress */
    );
    $sidebar2 = array(
    'before_widget' => '',
    'after_widget' => '',
    'before_title' => '',
    'after_title' => '',
    'name'=>'Une autre sidebar',
    );
    $sidebar3 = array(
    'before_widget' => '',
    'after_widget' => '',
    'before_title' => '',
    'after_title' => '',
    'name'=>'Et encore une',
    );
    register_sidebar($sidebar1);
    register_sidebar($sidebar2);
    register_sidebar($sidebar3);
    }

    [/code]

    Est ce qu’il manque pas quelque chose à la fin ?
    Dans l’admin de wp, dans widget où doit apparaitre le nouveau menu ?
    Merci infiniment pour ton temps !!

  • George (169 comments), le 28 février 2012

    Soit le copier/coller n’a pas fait tout apparaître, soit il manque des bouts dans ton code, notamment la partie suivante :
    if ( function_exists(‘register_sidebar’) ) {

    Un bon moyen de débuguer, est de mettre dans ton fichier functions.php des die(‘test1′); die(‘test2′); un peu partout, puis de les supprimer un par un.
    Ca te permettra de voir où ça coince, et d’isoler plus précisément le problème.
    As-tu testé avec un copier/coller simple de mon code avant de le modifier ? C’est celui que j’utilise en permanence, soit environ une fois toutes les deux semaines…

    Dans l’admin tu devrais voir les widgets dans apparence->widgets dans la partie droite de ton écran.

  • zoukzouk (6 comments), le 28 février 2012

    Effectivement le copier/coller sur mon post ne fait pas tout apparaitre.
    J’ai bien le if ( function_exists(‘register_sidebar’) ) {
    (je n’ai fait aucune modif à ton code).
    A propos de ton code, si tu commences par ” if…” on ne doit pas finir par “…endif;” ?

    Merci beaucoup en tous cas !! Je recommencerai à zero demain et tenterai avec des dies…

  • George (169 comments), le 28 février 2012

    Soit tu fais if: ton code endif;
    Soit, de manière plus traditionnelle if{ton code}

  • zoukzouk (6 comments), le 29 février 2012

    Salut George!
    J’ai enfin réussit!!! le problème venait bien de l’utilisation du thème enfant.
    En fait il existe déjà une fonction un peu similaire dans le thème parent d’où une espèce de conflit.
    Donc dans le dossier enfant il faut créer un nouveau fichier functions.php dans lequel on écrit seulement les paramètres de la nouvelle sidebar mais surtout pas la fonction if (function_exist…)

    Je ne sais pas si c’est très clair mais ça peut peut-être donner des pistes à ceux dans le même cas…

  • George (169 comments), le 29 février 2012

    Bonne nouvelle !
    Et merci pour l’info de ce problème avec les thèmes enfants. Développant habituellement mes propres thèmes, je n’avais jamais été confronté à ce problème, mais on ne sait jamais… ca m’évitera de chercher ;)

Poster un commentaire

Subscribe without commenting