Afficher des widgets spécifiques de la barre latérale dynamique sur une page spécifique
2 réponses
- votes
-
- 2011-09-16
Jepense que vouspourriez avoirbesoin simplement d'exécuter
register_sidebar()
dans un hook'widgets_init'
. Lethème TwentyTen a desexemplespourregister_sidebar()
dans sonfichierfunctions.php
,mais voici à quoi celapourrait ressembler:add_action( 'widgets_init', 'twentyten_widgets_init' ); function twentyten_widgets_init() { register_sidebar( array( 'name' => __( 'News Sidebar', 'yoursite' ), 'id' => 'sidebar-news', 'description' => __( 'The News Sidebar Area', 'yoursite' ), 'before_widget' => '<li id="%1$s" class="widget-container %2$s">', 'after_widget' => '</li>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>', )); /* * THE REST OF THE SIDEBAR REGISTRATION CODE FROM twentyten_widgets_init() GOES HERE */ }
Deplus,dans votremodèle depage
template_news.php
,utilisez le code suivantpour appeler votrebarre latérale qui chargera lefichiersidebar-news.php
que vous avez créé ci-dessus:<?php get_sidebar( 'news' ); ?>
Vousne devriez avoirbesoin d'aucune des autres choses que vous avezessayées,et certainement d'aucuneinstruction
include
.I think what you might need is simply to run
register_sidebar()
in an'widgets_init'
hook. The TwentyTen theme has examples forregister_sidebar()
in itsfunctions.php
file, but here's what it might look like:add_action( 'widgets_init', 'twentyten_widgets_init' ); function twentyten_widgets_init() { register_sidebar( array( 'name' => __( 'News Sidebar', 'yoursite' ), 'id' => 'sidebar-news', 'description' => __( 'The News Sidebar Area', 'yoursite' ), 'before_widget' => '<li id="%1$s" class="widget-container %2$s">', 'after_widget' => '</li>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>', )); /* * THE REST OF THE SIDEBAR REGISTRATION CODE FROM twentyten_widgets_init() GOES HERE */ }
Also, in your
template_news.php
page template use the following code to call your sidebar which will load thesidebar-news.php
file you created above:<?php get_sidebar( 'news' ); ?>
You shouldn't need any of the other things you tried, and definitely not any
include
statements.-
J'ai déjàfait cela.C'était lapremière chose quej'aiessayéeexactement comme vous l'avezexposé.Cependant celane fonctionnepas.Le code demonmodèlepersonnalisépour le contenuet labarre latéraleest remplacépar lesparamètrespar défaut dans `loop.php` &` loop-page.php`.I have already done this. It was the first thing I tried exactly as you have laid out. However it does not work. The code in my custom template for the content and the sidebar are being overridden by default settings in `loop.php` & `loop-page.php`.
- 0
- 2011-09-16
- biggles
-
@jlego - Hmm.J'aitestémon original avec TwentyElevenet juste retesté avec TwentyTenet celafonctionne.`loop.php`et` loop-page.php`n'ont rien à voir avec lagénération de labarre latérale,àmoinsbien sûr que l'autre développeurn'aitfait des choses vraiment vicieuses.Pouvez-vousmettre àjour votre questionet publier ces deuxfichiers ainsi que le contenu de votrefichier `template_news.php`?@jlego - Hmm. I tested my original with TwentyEleven and just retested with TwentyTen and it works. `loop.php` & `loop-page.php` don't have anything to do with sidebar generation, unless of course the other developer did some really screwy things. Can you update your question and post those two files as well as the content of your `template_news.php` file?
- 1
- 2011-09-16
- MikeSchinkel
-
@jlego - Deplus,si vousn'avezpas [PhpStorm + Zend Debugger] (http://blog.jetbrains.com/webide/tag/zend-debugger/) dans votreboîte à outils,vouspouvezenvisager d'en obtenir une copie.Avec lui,vouspouvez suivre votre site lignepar ligneet voirexactementpourquoiilfonctionne oune fonctionnepas.@jlego - Also, if you don't have [PhpStorm + Zend Debugger](http://blog.jetbrains.com/webide/tag/zend-debugger/) in your toolset, you might consider getting a copy. With it you could trace through your site line-by-line and see exactly why it is or is not working.
- 1
- 2011-09-16
- MikeSchinkel
-
C'était vraimentfrustrantparce queje savais que cela devraitfonctionner,et j'avais vérifiétoutes les variablespourm'assurer que lemodèle était correctement définiet queje n'avais aucuneerreur dansmon code.Il s'avère que quiconque aeu lamain dessus avantmoi avait obtenu unblogrollpour apparaître sur lapageen définissant cettepageparticulière sur lapage "posts" dans l'admin wp.Ainsi,lorsqueje suis allé créer unmodèlepersonnalisé,ceparamètre remplaçaitmonmodèleet disait à lapage d'exécuter le code dans cesfichiers.Merci quandmêmepour vôtre aide.Je vais vérifier PHPStormet Zend Debugger.It was really frustrating me because I knew that this should work, and I had checked all the variables to make sure I had the template set correctly and didn't have any mistakes in my code. Turns out that whoever had their hands on it before me had gotten a blogroll to show up on the page by setting that particular page to the "posts" page in the wp admin. So when I went to make a custom template, that setting was overriding my template and telling the page to run the code in those files. Thanks for your help though. I will check out PHPStorm and Zend Debugger.
- 0
- 2011-09-17
- biggles
-
Même si celan'apas résolu leproblème spécifique quej'avais,c'est labonnefaçon d'accomplir l'ajout d'unebarre latérale à lapage.Je crois que la solution réelle àmonproblème se limitait àmon cas spécifique,c'estpourquoije marque votre réponse comme la solution à cette questionen réponse aunombre depoints de vue de cette question.Even though this did not solve the specific issue I was having, This is the correct way to accomplish adding a sidebar to the page. I believe the actual solution to my issue was limited to my specific case, so I am marking your answer as the solution to this question in response to the number of views this question has.
- 0
- 2013-09-03
- biggles
-
@jlego - Wow,merci d'être revenubien plustard.Quoi qu'ilen soit,désolé,je n'aipaspu vous aider avec votre cas d'utilisation spécifique.@jlego - Wow, thanks for coming back to much later. Anyway, sorry I wasn't able to help you with your specific use-case.
- 0
- 2013-09-05
- MikeSchinkel
-
- 2011-09-16
Pour afficher un widget uniquement sur despages spécifiques oùtoutes vospages ont lamêmebarre latérale,vouspouvez utiliser l'un de cesplugins:
Masquez simplement les widgets sur lespages spécifiées.Ajoute des cases à cocher à chaque widgetpour l'afficher ou lemasquer sur chaquepage du site.
Widget Logic vouspermet de contrôler sur quellespages les widgets apparaissent à l'aide desbalises conditionnelles de WP.Il ajoute également unfiltre "widget_content".
To display a widget only on specific pages where all your pages have the same sidebar, you may use one of those plugins :
Simply hide widgets on specified pages. Adds checkboxes to each widget to either show or hide it on every site page.
Widget Logic lets you control on which pages widgets appear using WP's conditional tags. It also adds a 'widget_content' filter.
-
Https://wordpress.org/plugins/dynamic-widgets/est également unexcellentpluginpour cela.Also a great plugin for this is https://wordpress.org/plugins/dynamic-widgets/
- 0
- 2015-01-16
- NickFMC
Un site wordpressm'a été remis àmi-chemin. Celafait aumoins un an quej'ai utilisé wordpresspour la dernièrefoiset il y abeaucoup de choses queje trouve différentes. Lafaçon dontj'ai l'habitude d'afficher différents contenus sur différentespagesest de créer desmodèles depagepour chaquepagenécessitant un contenu unique.
J'essaie d'afficher unebarre latérale différente sur unepageen particulier que sur le reste du site. Ce quej'auraisfaitil y a un an,c'est créer unmodèle depagepour cettepageet créer unnouveaufichier debarre latérale,puisinclure lefichier debarre latérale dans lemodèle depage. J'aitrouvé que celane fonctionnepas. Lesprincipaux coupables queje peux voir sont
loop.php
& amp;loop-page.php
,qui étaientinexistants dans lethème épuré quej'utilisaisgénéralement lors de la création d'un siteil y a longtemps. Cependant,il semble que quiconque amis lamain sur cette chose avantmoi a copié lethème «vingt dix»et y a apporté desmodifications sous unnouveaunom.J'aienregistré unenouvellebarre latérale dynamique dans le
functions.php
duthèmeet jepeux la voir dans la section Widgets dutableau debordet y ajouter des widgets.Jene peuxpas,par amour de Dieu,l'afficher sur lapage queje souhaite. J'aiessayé ce qui suit:
1.) Donner à lapage unmodèlepersonnalisé
template_news.php
et placer ce qui suit là où labarre latérale doit être appelée:Le champ
sidebar-news.php
contenant le code quej'ai copié desidebar.php
avec l'identifiant de labarre latérale "Actualités" quej'ai répertorié dansfunctions.php
:Lemodèle depageest appliqué à labonnepage.
2.) Entré dans
page.php
et modifié:à:
J'ai également vérifiéplusieursfoispourm'assurer que l'ID depageest correctet j'aiessayé d'utiliser lenom du slug à laplace,maisen vain.
3.) J'aiessayé leprécédent dans
loop-page.php
4.) Aplacé l'instruction conditionnelle suivante dans
sidebar.php
:Également après avoirfait quelques rechercheset découvert que labonnefaçon d'étendre ou demodifier lafonctionnalité d'unthèmeest de créer unthèmeenfant,j'aiessayé de lefaire,mais cela a causé la rupture de certaines choses queje n'aipas letemps d'essayer de réparer.
J'ai constaté que le "sidebar.php"par défautest appeléet affiché sur lapage,cependant,même simoninstruction conditionnelle avec l'ID depageestprésente,ellen'affichepas les widgets de labarre latéralepersonnalisée.
Jen'arrivepasnonplus àtrouver comment labarre latéralepar défautest appelée sur lapageparce quej'ai supprimé
get_sidebar ();
complètement surmonmodèlepersonnalisétemplate_news.php
,page.php
,ouloop-page.php
ne semble rienfaire.Quelqu'unpeut-ilme dire comment ajouter cettebarre latérale à lapage.