2010-11-18 12 views
16

Trochę się zgubiłem.Wordpress - wyświetlanie konkretnego widżetu

Załóżmy, że mam dynmiczny footer-siderbar. Łatwe do tej pory.

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

Odrzuca je w stopce.

Ale oto jesteśmy. Chcę Każdy widget wewnątrz mojej sieci:

 <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> 

Więc get_sidebar nie jest opcją teraz, ponieważ wyświetla wszystkie widżety w rzędzie. I nie chcę edytować samych widgetów.

Jak to robią w motywach?

Dzięki.

Odpowiedz

15

Można użyć funkcji 'the_widget' dla tego:

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

Więcej informacji można znaleźć na Wordpress Codex - The_Widget reference.

+2

niezły pomysł, ale o ile wiem the_widget wymaga nazwy widget jako pierwszy parametr i nie wiem, jaka będzie nazwa gadżetów w stopce. Mam tylko nazwę paska bocznego. – fomicz

+2

Czy udało Ci się użyć the_widget do wyświetlenia istniejącego widżetu (zamiast tworzenia nowego)? Jak to osiągnąłeś? – NPC

+1

co umieścisz w instancji i $ args? skąd wiesz, co umieścić. – ahnbizcad

2

Jest to dobre referencje, a także - Function Reference/dynamic sidebar « WordPress Codex

Jeśli używasz metody na tej stronie:

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

Następnie można użyć CSS stylizacji, aby umieścić widgety bocznym całej stopce.

Edycja obejmuje następujące ...

Arras motyw 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; } 

kodowanie Stopka:

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

w temacie to następnie umieszcza w całej widgety Strona.

+0

Dziękuję, od kilku godzin kopiecie Codex, ale wciąż nie ma szczęścia. – fomicz

+0

Zobacz powyższą edycję, która może być trochę bardziej pomocna. –

+0

Również jeśli spojrzysz na motyw Arrasa, poprowadzą ten sam pomysł przez stopkę - http://demo.arrastheme.com/ –

0

Alternatywnie można również użyć:

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

Można użyć opcji Widget Plugin ograniczyć lub kontrolować widoczność widgety na wszystkich stronach i urządzeń; dostępny za darmo w repozytorium: https://wordpress.org/plugins/widget-options/. Lub spróbuj użyć widget_display_callbackhttps://developer.wordpress.org/reference/hooks/widget_display_callback/. Mam nadzieję, że to pomoże.

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