WordPress dynamic_sidebar n’analyse pas, supprime les modifications

Publié par Jean-Michel le

Salut chers programmeurs,

Je suis relativement nouveau sur WordPress puisque j’utilisais habituellement Typo3, j’ai donc une question concernant les barres latérales personnalisées dans WP.

J’ai le code suivant dans mon functions.php

function custom_sidebars()
{

  register_sidebars(4, array
  (
    'name' => __('Panel Startseite %d', 'me'),
    'id' => 'panel-home-%d',
    'description' => 'Widget Position for home panel',
    'class' => 'panel-sidebar',
    'before_widget' => '<div class="widget-panel-%d">',
    'after_widget' => '</div>',
    'before_title' => '<h2 class="panel-title">',
    'after_title' => '</h2>'
  ));

  $args2 = array
  (
    'name' => __('Short Bio Sidebar', 'me'),
    'id' => 'shortbio-id',
    'description' => 'Widget Position for short bio',
    'class' => 'shortbio-sidebar',
    'before_widget' => '<div class="widget-bio">',
    'after_widget' => '</div>',
    'before_title' => '<h2 class="widgettitle">',
    'after_title' => '</h2>'
  );
  register_sidebars(1, $args2);

}

add_action('widgets_init', 'custom_sidebars');

Je souhaite ajouter 4 panneaux d’informations sur ma page d’accueil et dans le pied de page un autre petit champ permettant à l’auteur d’ajouter une biographie ou de la modifier.

Voici mon code de mon index.php

<div id="main">
  <div class="wrapper">
    <div class="col-sm-6">
      <div class="inner">
        <?php dynamic_sidebar('panel-home-1'); ?>
      </div>
    </div>
    <div class="col-sm-6">
      <div class="inner">
        <?php dynamic_sidebar('panel-home-2'); ?>
      </div>
 ... and so on

La même implémentation est dans footer.php à une position donnée.

Mes problèmes sont :

  • Le contenu que j’ajoute via les thèmes de menu backend -> les widgets ne s’affichent pas et est supprimé la prochaine fois que j’ouvre le backend.
  • Il n’y a pas d’erreurs dans wp-content/debug.log , j’ai corrigé toutes les erreurs courantes après avoir activé l’option dans wp-config.php

Comment puis-je résoudre ce problème, quelles sont mes erreurs de réflexion de base ?

Meilleures considérations Kylo

Solution n°1 trouvée

Votre code est tout bon. Juste une erreur, vous utilisez %dpour concaténer les décimales après votre identifiant. Mais ce n’est pas nécessaire puisque %d est automatiquement ajouté à l’identifiant fourni. Veuillez trouver le lien du codex à la fin de cette réponse.

Donc, j’ai supprimé le %d de la section id de votre code et maintenant cela fonctionne.

La solution:

function custom_sidebars()
{

  register_sidebars(4, array
  (
    'name' => __('Panel Startseite %d', 'me'),
    'id' => 'panel-home',
    'description' => 'Widget Position for home panel',
    'class' => 'panel-sidebar',
    'before_widget' => '<div class="widget-panel">',
    'after_widget' => '</div>',
    'before_title' => '<h2 class="panel-title">',
    'after_title' => '</h2>'
  ));

  $args2 = array
  (
    'name' => __('Short Bio Sidebar', 'me'),
    'id' => 'shortbio-id',
    'description' => 'Widget Position for short bio',
    'class' => 'shortbio-sidebar',
    'before_widget' => '<div class="widget-bio">',
    'after_widget' => '</div>',
    'before_title' => '<h2 class="widgettitle">',
    'after_title' => '</h2>'
  );
  register_sidebars(1, $args2);

}

add_action('widgets_init', 'custom_sidebars');

et

<div id="main">
  <div class="wrapper">
    <div class="col-sm-6">
      <div class="inner">
        <?php dynamic_sidebar('panel-home'); ?>
      </div>
    </div>
    <div class="col-sm-6">
      <div class="inner">
        <?php dynamic_sidebar('panel-home-2'); ?>
      </div>
 ... and so on

Vous n’avez pas besoin d’ajouter %d à l’identifiant de register_sidebars. Veuillez lire le codex, il dit :

« %d » est ajouté automatiquement à la valeur ‘id’ fournie après la première ; par exemple, « Barre latérale-1 », « Barre latérale-2 », « Barre latérale-3 », etc.

Solution n°2 trouvée

Votre code est tout bon. Juste une erreur, vous utilisez %dpour concaténer les décimales après votre identifiant. Mais ce n’est pas nécessaire puisque %d est automatiquement ajouté à l’identifiant fourni. Veuillez trouver le lien du codex à la fin de cette réponse.

Donc, j’ai supprimé le %d de la section id de votre code et maintenant cela fonctionne.

La solution:

function custom_sidebars()
{

  register_sidebars(4, array
  (
    'name' => __('Panel Startseite %d', 'me'),
    'id' => 'panel-home',
    'description' => 'Widget Position for home panel',
    'class' => 'panel-sidebar',
    'before_widget' => '<div class="widget-panel">',
    'after_widget' => '</div>',
    'before_title' => '<h2 class="panel-title">',
    'after_title' => '</h2>'
  ));

  $args2 = array
  (
    'name' => __('Short Bio Sidebar', 'me'),
    'id' => 'shortbio-id',
    'description' => 'Widget Position for short bio',
    'class' => 'shortbio-sidebar',
    'before_widget' => '<div class="widget-bio">',
    'after_widget' => '</div>',
    'before_title' => '<h2 class="widgettitle">',
    'after_title' => '</h2>'
  );
  register_sidebars(1, $args2);

}

add_action('widgets_init', 'custom_sidebars');

et

<div id="main">
  <div class="wrapper">
    <div class="col-sm-6">
      <div class="inner">
        <?php dynamic_sidebar('panel-home'); ?>
      </div>
    </div>
    <div class="col-sm-6">
      <div class="inner">
        <?php dynamic_sidebar('panel-home-2'); ?>
      </div>
 ... and so on

Vous n’avez pas besoin d’ajouter %d à l’identifiant de register_sidebars. Veuillez lire le codex, il dit :

« %d » est ajouté automatiquement à la valeur ‘id’ fournie après la première ; par exemple, « Barre latérale-1 », « Barre latérale-2 », « Barre latérale-3 », etc.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *