2010-11-18 6 views
16

Je suis un peu perdu.Wordpress - afficher un widget spécifique

Disons que j'ai un footer-siderbar dynmique. Facile jusqu'ici.

<footer> 
    <?php get_sidebar("name") ?> 
</footer> 

L'affiche dans le pied de page.

Mais nous y sommes. Je veux Chaque widget à l'intérieur de ma grille:

 <footer> 
     <div style="width: 100px:"> 
      <div style="width: 25%">First widget here</div> 
      <div style="width: 25%">Second widget here<</div> 
      <div style="width: 25%">Third widget here<</div> 
      <div style="width: 25%">Fourth widget here<</div> 
      </div> 
     </footer> 

Alors get_sidebar est pas une option maintenant, car il affiche tous les widgets dans une rangée. Et je ne veux pas éditer les widgets eux-mêmes.

Comment font-ils cela dans les thèmes?

Merci.

Répondre

15

Vous pouvez utiliser la fonction 'the_widget' pour cela:

<?php the_widget($widget, $instance, $args); ?> 

Plus d'informations peuvent être trouvées sur le Wordpress Codex - The_Widget reference.

+2

Bonne idée, mais pour autant que je sache the_widget exige nom du widget comme premier paramètre et je ne sais pas quel sera le nom de gadgets dans le pied de page. J'ai juste le nom de la barre latérale. – fomicz

+2

Avez-vous réussi à utiliser le widget pour afficher un widget existant (au lieu d'en créer un nouveau)? Comment l'avez-vous atteint? – NPC

+1

qu'est-ce que vous mettez dans l'instance et $ args? comment savez-vous quoi mettre. – ahnbizcad

2

Ceci est une bonne référence aussi bien - Function Reference/dynamic sidebar « WordPress Codex

Si vous utilisez la méthode sur cette page:

<ul id="sidebar"> 
<?php if (!dynamic_sidebar()) : ?> 
    <li>{static sidebar item 1}</li> 
    <li>{static sidebar item 2}</li> 
<?php endif; ?> 
</ul> 

Vous pouvez ensuite utiliser le style CSS pour positionner les widgets de la barre latérale dans le pied de page.

Modifier inclure les éléments suivants ...

Arras thème CSS:

#footer    { margin: 20px auto 0; width: 980px; background: #ECEBE6; padding-bottom: 10px; border: 1px solid #CCC; } 
#footer .widgetcontainer { padding: 5px 10px; min-width: 150px; } 
.no-js #footer .widgetcontainer { height: 190px; } 
#footer .widgettitle { background: none; border: none; font-size: 14px; color: #444; padding: 0 0 10px; letter-spacing: -1px; } 
#footer .widgetcontent { font-size: 12px; background: none; padding: 0; border: none; } 
#footer .footer-message { margin: 0; padding: 10px 15px 0; font-size: 11px; } 
#footer .footer-message p { margin: 0 0 0.5em; } 
#footer .footer-message .floatright { margin-left: 20px; } 
#footer-sidebar  { overflow: hidden; margin: 10px 10px 0; padding: 0 0 10px; border-bottom: 1px solid #CCC; } 
#footer-sidebar .widgetcontainer { float: left; margin: 0; max-width: 250px; } 
#footer-sidebar ul { list-style: none; margin: 0; padding: 0; } 
#footer-sidebar li { margin: 0 0 3px; } 

codage de bas de page:

<ul id="footer-sidebar" class="clearfix xoxo"> 
     <?php if (!function_exists('dynamic_sidebar') || !dynamic_sidebar('Footer')) : ?> 
     <li></li> 
    <?php endif; ?> 
</ul> 

Dans le thème, il place ensuite les widgets à travers la page.

+0

Merci, vous avez creusé le Codex pendant quelques heures maintenant, mais toujours pas de chance. – fomicz

+0

Voir ci-dessus, cela pourrait être un peu plus utile. –

+0

Aussi, si vous jetez un oeil au thème Arras, ils courent la même idée à travers le pied de page - http://demo.arrastheme.com/ –

0

Sinon, vous pouvez également utiliser:

<?php dynamic_sidebar('sidebar-1'); ?> 
0

Vous pouvez utiliser les options Widget Plugin pour limiter ou contrôler la visibilité des widgets sur les pages et les périphériques; disponible gratuitement sur le référentiel: https://wordpress.org/plugins/widget-options/. Ou essayez d'utiliser widget_display_callbackhttps://developer.wordpress.org/reference/hooks/widget_display_callback/. J'espère que ça aide.

function custom_display_callback($instance, $widget, $args){ 
    if(is_page()){ 
     return false; 
    } 
    return $instance; 
} 
add_filter('widget_display_callback', 'custom_display_callback', 50, 3); 

enter image description here

Questions connexes