web-dev-qa-db-fra.com

Afficher un widget de pied de page spécifique pour des pages spécifiques

J'ai enregistré un nouveau widget de pied de page avec ce code.

register_sidebar(array(
  'name' => esc_html__( 'Footer Sidebarprestige', 'realtor' ),
  'id' => 'footer-sidebarprestige',
  'description' => esc_html__( 'Widgets in this area will be shown in Footer Area.', 'realtor' ),
  'class'=>'',
  'before_widget'=>'<li id="%1$s"  class="col-md-3 col-sm-6 widget %2$s">',
  'after_widget'=>'</li>',
  'before_title' => '<h5>',
  'after_title' => '</h5>'
));

Je l'ai appelé dans mon fichier footer.php comme ceci:

<ul class="row">

   <?php dynamic_sidebar('footer-sidebar'); ?>

 </ul>

  <ul class="row">

   <?php dynamic_sidebar('footer-sidebarprestige'); ?>

 </ul>

Le 'footer-sidebar' est le widget original et le 'footer-sidebarprestige' est celui que j'ai ajouté. La situation actuelle si j'ajoute un widget à la zone de widget que j'ai ajoutée apparaît sous l'original et je comprends pourquoi.

Ce que j'essaye de faire. Appelez la zone de widget que j'ai ajoutée uniquement pour certains identifiants de page. Fondamentalement, uniquement sur les ID de page appelés, affichez le widget de pied de page nouvellement créé et n'indiquez pas la zone du widget d'origine.

2
Joe

Vous pouvez y parvenir de plusieurs manières:

A. Utilisez CSS pour masquer et afficher les widgets en fonction de la page sur laquelle vous vous trouvez. C'est une bonne solution de contournement, mais cela ne résout pas vraiment votre problème, surtout si vous avez beaucoup de pages/widgets.

B. Appelez une zone de widget différente dans votre fichier de modèle avec une logique conditionnelle

<ul class="row">
   <?php if(is_page('my-page')){
      dynamic_sidebar('footer-sidebarprestige');
   } ?> 
</ul>

C. Utilisez un plugin tel que Widget Logic pour utiliser une logique conditionnelle sur les widgets eux-mêmes. Vous pouvez ensuite ajouter une condition telle que is_page('my-page') pour afficher le widget, widget par widget.

2
Pim

Si j'ai bien compris, vous souhaitez afficher un widget sur des pages spécifiques, n'est-ce pas? Vous pouvez utiliser un plugin pour cela: https://wordpress.org/plugins/widget-context/

0
Remzi Cavdar

Compris avec le code ci-dessous:

<ul class="row">

   <?php if ( is_page( 1111 )) : ?>
   <?php dynamic_sidebar('footer-sidebarprestige'); ?>
   <?php else :?>
   <?php dynamic_sidebar('footer-sidebar'); ?>
   <?php endif; ?>

  </ul>

Merci Pim, tu m'as envoyé sur la bonne voie pour obtenir ma réponse

0
Joe